Test Foro de elhacker.net SMF 2.1

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
#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:
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:
for (n=0; n<=10; n++){
   printf("[%d]",matriz[i][n]);
};

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:
for (n=0; n<=10; n++)
   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:
for (i = 0; i < fila; i++){
   aux = matriz[i][i];
   matriz[i][i] = matriz[i][columna - 1 - i];
   matriz[i][columna - 1 - i] = aux;
}


Un saludo
Título: Re: Matriz principal con secundaria
Publicado por: Jaua10 en 21 Noviembre 2014, 17:03 PM
#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 (cpp) [Seleccionar]
printf("\nLa matriz con intercambio de diagonal principal por la secundaria\n\n");
printf("\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;
}
   
for (i=0;i<fila;i++) {
   for (n=0;n<columna;n++)
    printf("[%d]",matriz[i][n]);
   printf("\n");
}


¡¡¡¡ 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