ayuda en una matriz de 5*5

Iniciado por daxelmejor, 6 Mayo 2010, 04:28 AM

0 Miembros y 3 Visitantes están viendo este tema.

daxelmejor

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

Og.

Busca algún manual de C, eso que pides es muy simple, solo necesitas saber asignar valores y usar arreglos :P
|-

daxelmejor

BUENO SI TU LO DICES PRO COMO LE PODRIA ASIGNAR SI ESQ ME PODRIAS DECIR.........GRACIAS

Torino10

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 (cpp) [Seleccionar]
#include <conio.h>
#include <iostream.h>

void main()
{
   clrscr();

   int mat[5][5], i=0, j=0;

   for (i=0; i<5; i++)
       {
       for (j=0; j<5; j++)
   {
   if (i==0 || i==4) //SE LLENA LA FILA 0 Y 4 CON NUMEROS UNO
      {
      mat[i][j]=1;
      }
   else
      {
      if (i==1) //NOS POSICIONAMOS EN LA FILA 1
{
if (j==0 || j==4) //SE LLENA LA COLUMNA 0 Y 4 DE LA FILA 1 CON NUMEROS UNO
    {
    mat[i][j]=1;
    }
else
    {
    mat[i][j]=2;  //SE LLENAN LAS COLUMNAS RESTANTES, 1, 2 Y 3 DE LA FILA 1 CON NUMEROS DOS
    }
}
      else
{
if (i==2) //NOS POSICIONAMOS EN LA FILA 2
    {
    if (j==0 || j==4) //SE LLENA LA COLUMNA 0 Y 4 DE LA FILA 2 CON NUMEROS UNO
       {
       mat[i][j]=1;
       }
    else
       {
       if (j==1 || j==3) //SE LLENA LA COLUMNA 1 Y 3 DE LA FILA 2 CON NUMEROS DOS
  {
  mat[i][j]=2;
  }
       else
  {
  mat[i][j]=3; //SE LLENA LA COLUMNA RESTANTE, COLUMNA 2 CON UN NUMERO TRES
  }
       }
    }
else
    {
    if (i==3) //NOS POSICIONAMOS EN LA FILA 3
       {
       if (j==0 || j==4) //SE LLENA LA COLUMNA 0 Y 4 DE LA FILA 3 CON NUMEROS UNO
  {
  mat[i][j]=1;
  }
       else
  {
  mat[i][j]=2;   //SE LLENAN LAS COLUMNAS RESTANTES, 1, 2, Y 3 DE LA FILA 3 CON NUMEROS DOS
  }
       }
    }
}
      }
   }
       }


   //SE MUESTRA POR PANTALLA LA MATRIZ RESULTANTE 5x5

   for (i=0; i<5; i++)
       {
       cout<<"\n";
       for (j=0; j<5; j++)
   {
   cout<<mat[i][j];
   }
       }

   cout<<"\n\nPresione una tecla para continuar...";
   getch();
}




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!
"Tanto si crees que puedes, como si crees que no puedes, estas en lo correcto"

Littlehorse



  • 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
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Og.

Cita de: daxelmejor en  6 Mayo 2010, 14:44 PM
BUENO SI TU LO DICES PRO COMO LE PODRIA ASIGNAR SI ESQ ME PODRIAS DECIR.........GRACIAS
Código (c++) [Seleccionar]
variable = 5;


eso es asignar valores :)
|-

kworld


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}
                  };


[L]ord [R]NA

#7
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.


/*************************************************
* Fichero: matrizPoC.c                       *
* Descripcion: Crea una matriz del tipo     *
* 11111                    *
* 12221                    *
* 12321                    *
* 12221                    *
* 11111                    *
*                                           *
* Probado en Ubuntu 10.04.           *
* Compilado en G++                     *
* g++ -std=c99 matrizPoC.c             *
* ***********************************************/




#include <stdio.h>

int main()
{
int matriz[5][5];
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
//Condicion que se cumple para todo el borde pero tambien a la casilla central.
if(i*j==0||j%4==0||i%4==0)matriz[i][j]=1;

//Las demas casillas no cumplen con la condicion anterior.
else matriz[i][j]=2;

//En caso de ser la casilla central el valor debe ser 3.
if(i==2 && j==2) matriz[i][j]=3;
printf("%i",matriz[i][j]); //Imprimimos el valor por pantalla
}

//Saltamos la linea al terminar de trabajar la fila.
printf("\n");
}
return 0;
}

Littlehorse

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
An expert is a man who has made all the mistakes which can be made, in a very narrow field.

Gallu

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  ;-)
Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.