Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Jaua10 en 21 Noviembre 2014, 06:01 am



Título: Matriz principal con secundaria
Publicado por: Jaua10 en 21 Noviembre 2014, 06:01 am
Buenas noches disculpen tengo una duda es posible hacer una matriz de 5x5 y que su diagonal principal se cambie por la diagonal secundaria? y viceversa? tengo un codigo pero no se como hacerlo en dev c++


Título: Re: Matriz principal con secundaria
Publicado por: engel lex en 21 Noviembre 2014, 06:05 am
si es posible...

no se dan codigos hechos, se resuelven dudas, publica lo que llevas de codigo (usa las etiqeutas GeSHi) y en que tienes duda


Título: Re: Matriz principal con secundaria
Publicado por: Jaua10 en 21 Noviembre 2014, 06:10 am
Esto es lo que tengo adelantado y llevo dias tratando de resolver pero no logro conseguir que me ponga la diagonal principal como la secundaria
Código:
#include <stdio.h>
#include <conio.h>
main()
{
      int fila,columna,i,n,e,aux;  
      int matriz[10][10];        
      printf("Ingrese el dimension de fila: ");
      scanf("%d",&fila);
      printf("Ingrese el dimension de columna: ");
      scanf("%d",&columna);
      matriz[1][1]=matriz[fila][columna];
      printf("\nMatriz de [%d]x[%d]\n",fila,columna);
      printf("\n");
      for(i=0;i<fila;i++){
                          for(n=0;n<columna;n++){
                                              printf("Ingrese el valor de posicion [%d][%d]: ",i+1,n+1);
                                              scanf("%d",&matriz[i][n]);                                              
                                              }
                          }
      printf("\nLa matriz original:\n\n");
      for(i=0;i<fila;i++){
                          for(n=0;n<columna;n++){
                                              printf("[%d]",matriz[i][n]);
                                                                                            
                                              }
                                              printf("\n");
                          }
printf("\nLa matriz con intercambio de diagonal principal por la secundaria\n\n");
printf("\n");
e=10;
 for (i=0;i<=fila;i++)
 {
  
   for (n=0;n<=columna;n++)
   {
 
    if (i==n)
    {
         aux=matriz[i][e];
   matriz[i][e]=matriz[i][n];
   matriz[i][n]=aux;
  e--;
    }
   };



  };
  
 for (i=0;i<=10;i++)
 {
  printf("\n");
   for (n=0;n<=10;n++)
   {
        printf("[%d]",matriz[i][n]);
   };


  };
      getch();
      return 0;
}

gracias de ante mano


Título: Re: Matriz principal con secundaria
Publicado por: rir3760 en 21 Noviembre 2014, 15:37 pm
Lo primero que debes hacer es evitar el uso de la biblioteca conio de Borland, cambiar la definición de la función main a "int main(void) ..." o "int main() ...", mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico| (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).

* Debes eliminar la sentencia:
Código
  1. matriz[1][1]=matriz[fila][columna];
Ya que es inutil y puede causar que el programa reviente si se indica una matriz de diez filas y columnas.

* Las llaves de cierre no requieren de un punto después de estas:
Código
  1. for (n=0; n<=10; n++){
  2.   printf("[%d]",matriz[i][n]);
  3. };
Ese punto y coma se procesa como una sentencia nula, esta de mas y hay que eliminarla. Y si el cuerpo del bucle es una sola sentencia no hay necesidad de paréntesis con lo cual el bucle anterior se reduce a:
Código
  1. for (n=0; n<=10; n++)
  2.   printf("[%d]",matriz[i][n]);

* En el ultimo bucle donde imprimes la matriz con las diagonales intercambiadas utilizas 10 como el limite de ambos bucles cuando deberías utilizar fila y columna.

* Por ultimo para intercambiar los valores de las diagonales solo necesitas de un bucle, de esta forma:
Código
  1. for (i = 0; i < fila; i++){
  2.   aux = matriz[i][i];
  3.   matriz[i][i] = matriz[i][columna - 1 - i];
  4.   matriz[i][columna - 1 - i] = aux;
  5. }

Un saludo


Título: Re: Matriz principal con secundaria
Publicado por: Jaua10 en 21 Noviembre 2014, 17:03 pm
Código:
#include <stdio.h>
#include <conio.h>
main()
{
      int fila,columna,i,n,e,aux; 
      int matriz[10][10];         
      printf("Ingrese el dimension de fila: ");
      scanf("%d",&fila);
      printf("Ingrese el dimension de columna: ");
      scanf("%d",&columna);

      printf("\nMatriz de [%d]x[%d]\n",fila,columna);
      printf("\n");
      for(i=0;i<fila;i++){
                          for(n=0;n<columna;n++){
                                              printf("Ingrese el valor de posicion [%d][%d]: ",i+1,n+1);
                                              scanf("%d",&matriz[i][n]);                                             
                                              }
                          }
      printf("\nLa matriz original:\n\n");
      for(i=0;i<fila;i++){
                          for(n=0;n<columna;n++){
                                              printf("[%d]",matriz[i][n]);
                                                                                           
                                              }
                                              printf("\n");
                          }
printf("\nLa matriz con intercambio de diagonal principal por la secundaria\n\n");
printf("\n");
e=10;
 for (i=0;i<=fila;i++)
 {
 
   for (n=0;n<=columna;n++)
   {
 
    if (i==n)
    {
         aux=matriz[i][e];
   matriz[i][e]=matriz[i][n];
   matriz[i][n]=aux;
  e--;
    }
   }



  }
   
 for (i=0;i<=fila;i++)
 {
  printf("\n");
   for (n=0;n<=columna;n++)
   {
   for (i = 0; i < fila; i++){
   aux = matriz[i][i];
   matriz[i][i] = matriz[i][columna - 1 - i];
   matriz[i][columna - 1 - i] = aux;

    printf("[%d]",matriz[i][n]);
   }
   
   }


  }

No logro conseguir que se intercambien las diagonales, me sivio de mucho lo explicado antes, aunque sigo sin poder tener resultado no se que puedo tener malo


Título: Re: Matriz principal con secundaria
Publicado por: leosansan en 21 Noviembre 2014, 20:40 pm
Haz mezclado parte de tu código con el que te propuso rir3760.

A ver si con esto te funciona ( sobra la e=10 que no sé que pintaba en todo esto):

Código
  1. printf("\nLa matriz con intercambio de diagonal principal por la secundaria\n\n");
  2. printf("\n");
  3.  
  4. for (i = 0; i < fila; i++) {
  5.   aux = matriz[i][i];
  6.   matriz[i][i] = matriz[i][columna - 1 - i];
  7.   matriz[i][columna - 1 - i] = aux;
  8. }
  9.  
  10. for (i=0;i<fila;i++) {
  11.   for (n=0;n<columna;n++)
  12.    printf("[%d]",matriz[i][n]);
  13.   printf("\n");
  14. }

¡¡¡¡ Saluditos! ..... !!!!


(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)


Título: Re: Matriz principal con secundaria
Publicado por: Jaua10 en 21 Noviembre 2014, 22:02 pm
Muchas gracias leosansan la modificacion de codigo que hiciste funciono y le pude agregar otros detalles perfectamente sin tener error alguno.Feliz dia