Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: daxelmejor en 6 Mayo 2010, 04:28 am



Título: ayuda en una matriz de 5*5
Publicado por: daxelmejor en 6 Mayo 2010, 04:28 am
hola espero que me puedan ayudar esq la verdad me estan enseñando no mucho de borland c++ pro quisiera saber si me podrian ayudar...................bueno lo que necesito es como hago para transformar de una matriz de 5*5 a esto...........
11111
12221
12321
12221
11111
bueno eso debe salir automaticamente osea soo sin ingresar nada.....debe salir ya automatizado para definir esta tabla como podria hacer debo utlizar for o que otro comando espero que me ayuden gracias..........saludos a todos en esta comunidad........................ ;-) :o :xD


Título: Re: ayuda en una matriz de 5*5
Publicado por: Og. en 6 Mayo 2010, 07:24 am
Busca algún manual de C, eso que pides es muy simple, solo necesitas saber asignar valores y usar arreglos :P


Título: Re: ayuda en una matriz de 5*5
Publicado por: daxelmejor en 6 Mayo 2010, 14:44 pm
BUENO SI TU LO DICES PRO COMO LE PODRIA ASIGNAR SI ESQ ME PODRIAS DECIR.........GRACIAS


Título: Re: ayuda en una matriz de 5*5
Publicado por: Torino10 en 6 Mayo 2010, 17:53 pm
Hola como estas!

Me tome el trabajo de hacerte el programita que pedis en Borland C++ for DOS.
Aqui te dejo el código, la verdad que se me hizo un poco largo. Quizás se lo pueda acortar pero por el momento lo realice asi. Seguro alguien más dará su opinión.

Código
  1. #include <conio.h>
  2. #include <iostream.h>
  3.  
  4. void main()
  5. {
  6.   clrscr();
  7.  
  8.   int mat[5][5], i=0, j=0;
  9.  
  10.   for (i=0; i<5; i++)
  11.       {
  12.       for (j=0; j<5; j++)
  13.   {
  14.   if (i==0 || i==4) //SE LLENA LA FILA 0 Y 4 CON NUMEROS UNO
  15.      {
  16.      mat[i][j]=1;
  17.      }
  18.   else
  19.      {
  20.      if (i==1) //NOS POSICIONAMOS EN LA FILA 1
  21. {
  22. if (j==0 || j==4) //SE LLENA LA COLUMNA 0 Y 4 DE LA FILA 1 CON NUMEROS UNO
  23.    {
  24.    mat[i][j]=1;
  25.    }
  26. else
  27.    {
  28.    mat[i][j]=2;  //SE LLENAN LAS COLUMNAS RESTANTES, 1, 2 Y 3 DE LA FILA 1 CON NUMEROS DOS
  29.    }
  30. }
  31.      else
  32. {
  33. if (i==2) //NOS POSICIONAMOS EN LA FILA 2
  34.    {
  35.    if (j==0 || j==4) //SE LLENA LA COLUMNA 0 Y 4 DE LA FILA 2 CON NUMEROS UNO
  36.       {
  37.       mat[i][j]=1;
  38.       }
  39.    else
  40.       {
  41.       if (j==1 || j==3) //SE LLENA LA COLUMNA 1 Y 3 DE LA FILA 2 CON NUMEROS DOS
  42.  {
  43.  mat[i][j]=2;
  44.  }
  45.       else
  46.  {
  47.  mat[i][j]=3; //SE LLENA LA COLUMNA RESTANTE, COLUMNA 2 CON UN NUMERO TRES
  48.  }
  49.       }
  50.    }
  51. else
  52.    {
  53.    if (i==3) //NOS POSICIONAMOS EN LA FILA 3
  54.       {
  55.       if (j==0 || j==4) //SE LLENA LA COLUMNA 0 Y 4 DE LA FILA 3 CON NUMEROS UNO
  56.  {
  57.  mat[i][j]=1;
  58.  }
  59.       else
  60.  {
  61.  mat[i][j]=2;   //SE LLENAN LAS COLUMNAS RESTANTES, 1, 2, Y 3 DE LA FILA 3 CON NUMEROS DOS
  62.  }
  63.       }
  64.    }
  65. }
  66.      }
  67.   }
  68.       }
  69.  
  70.  
  71.   //SE MUESTRA POR PANTALLA LA MATRIZ RESULTANTE 5x5
  72.  
  73.   for (i=0; i<5; i++)
  74.       {
  75.       cout<<"\n";
  76.       for (j=0; j<5; j++)
  77.   {
  78.   cout<<mat[i][j];
  79.   }
  80.       }
  81.  
  82.   cout<<"\n\nPresione una tecla para continuar...";
  83.   getch();
  84. }
  85.  
  86.  


Trata de leer el código e interpretar lo que se trata de hacer en cada línea, es la única forma de aprender además de practicar!
Cualquier duda que tengas pregunta!


Saludos!


Título: Re: ayuda en una matriz de 5*5
Publicado por: Littlehorse en 7 Mayo 2010, 00:50 am
  • main debe devolver int.
  • No deberías utilizar conio.
  • iostream.h es una declaración de header antigua, utiliza iostream

En cuanto al código, te excediste un poco con los if/else. Replantea el problema y veras que hay formas mas sencillas de codificarlo, pero en todo caso eso debe quedar para el usuario que posteo la duda, ya que en esta sección no se hacen tareas.

Saludos


Título: Re: ayuda en una matriz de 5*5
Publicado por: Og. en 7 Mayo 2010, 03:23 am
BUENO SI TU LO DICES PRO COMO LE PODRIA ASIGNAR SI ESQ ME PODRIAS DECIR.........GRACIAS
Código
  1. variable = 5;


eso es asignar valores :)


Título: Re: ayuda en una matriz de 5*5
Publicado por: kworld en 7 Mayo 2010, 04:51 am
Código:
int matriz[5][5]= {
                   {1,1,1,1,1},
                   {1,2,2,2,1},
                   {1,2,3,2,1},
                   {1,2,2,2,1},
                   {1,1,1,1,1}
                  };


Título: Re: ayuda en una matriz de 5*5
Publicado por: [L]ord [R]NA en 7 Mayo 2010, 05:54 am
Bueno aqui traigo otro codigo que hace exactamente lo mismo.

@Torino10: al igual que como dice LittleHorse creo que debes replantearte el problema y buscar una forma de hacerlo sin tantos if. Es incomodo para la lectura.

@kworld: La idea era hacer un codigo que lo imprimiera por pantalla sin ponerlo todo declarado desde el inicio.

Código
  1. /*************************************************
  2.  * Fichero: matrizPoC.c                       *
  3.  * Descripcion: Crea una matriz del tipo     *
  4.  * 11111                    *
  5.  * 12221                    *
  6.  * 12321                    *
  7.  * 12221                    *
  8.  * 11111                    *
  9.  *                                           *
  10.  * Probado en Ubuntu 10.04.           *
  11.  * Compilado en G++                     *
  12.  * g++ -std=c99 matrizPoC.c             *
  13.  * ***********************************************/
  14.  
  15.  
  16.  
  17.  
  18. #include <stdio.h>
  19.  
  20. int main()
  21. {
  22. int matriz[5][5];
  23. for(int i=0;i<5;i++)
  24. {
  25. for(int j=0;j<5;j++)
  26. {
  27. //Condicion que se cumple para todo el borde pero tambien a la casilla central.
  28. if(i*j==0||j%4==0||i%4==0)matriz[i][j]=1;
  29.  
  30. //Las demas casillas no cumplen con la condicion anterior.
  31. else matriz[i][j]=2;
  32.  
  33. //En caso de ser la casilla central el valor debe ser 3.
  34. if(i==2 && j==2) matriz[i][j]=3;
  35. printf("%i",matriz[i][j]); //Imprimimos el valor por pantalla
  36. }
  37.  
  38. //Saltamos la linea al terminar de trabajar la fila.
  39. printf("\n");
  40. }
  41. return 0;
  42. }
  43.  


Título: Re: ayuda en una matriz de 5*5
Publicado por: Littlehorse en 7 Mayo 2010, 07:05 am
Primero y principal, en esta sección no se hacen tareas, así que estaría bueno que dejen de postear códigos "solucionando" un ejercicio cuando el autor del post ni siquiera mostró lo que lleva hecho. Leer las reglas por favor.

Segundo, el algoritmo adecuado debe funcionar con matrices N x M ya que obviamente esa es la idea básica del ejercicio. Si no fuese así, las soluciones de Torino10 y kworld serian validas, lo cual no es así.

Saludos


Título: Re: ayuda en una matriz de 5*5
Publicado por: Gallu en 7 Mayo 2010, 09:56 am
Felicidades a Torino10 y a Lord R.N.A. le acaban de hacer la tarea a daxelmejor , mientras uds. estaban codificando su tarea , él a lo mejor estaba jugando  ;-)


Título: Re: ayuda en una matriz de 5*5
Publicado por: [L]ord [R]NA en 7 Mayo 2010, 13:47 pm
Felicidades a Torino10 y a Lord R.N.A. le acaban de hacer la tarea a daxelmejor , mientras uds. estaban codificando su tarea , él a lo mejor estaba jugando  ;-)

Yo estaba aburrido y buscaba algo que hacer.


Título: Re: ayuda en una matriz de 5*5
Publicado por: Littlehorse en 7 Mayo 2010, 21:30 pm
De esta forma no ayudan ni al foro ni al usuario, para estas alturas lo deberían tener claro.
Por lo pronto para no aburrirse deberían buscar formas que no violen las reglas de esta sección.

Saludos