Programación General > C/C++
Cuadro Latino
(1/1)
franc:
El programa se llama cuadro latino y consiste en esto:
Para N=4 :
1 2 3 4
4 1 2 3
3 4 1 2
2 3 4 1
Se supone que se debe introducir cualkier numero y te saca el cuadro latino correspondiente ( es un cuadrado de orden NxN )
alguien me puede guiar de como hacer esto ?
gracias
albany:
Hola!!
Si estás en C++ se me ocurre esto, de la nada, y habría que probarlo:
cargás en un vector de la STL hasta el número y después usás un iterador(puntero a la componente que vos querés) para mostrar lo que vos querés por pantalla (o donde sea).
Si necesitás alguna ayuda mandame un mail a albany@ciudad.com.ar
Ojalá te sirva, realmente recién vi tu mensaje y pensé en eso, no le dediqué mucho tiempo...
Flor Castagnino
mido_666:
Saludos, franc:
Has conseguido ya lo que te proponías? albany ya te dio unas buenas pistas.
De cualquier modo, te remito una posible solución en C, a mí me compila en gcc
sin ningún tipo de problmema, aunque soy consciente de que el codigo puede
resultar un poco enrevesado.
Nota: No te limites a copiarlo, reescríbelo a tu manera ( - ; y no dudes en decir
si le encuentras fallos.
--- Código: Text --- #include <stdio.h> /* Cuadro Latino */ int main(void){int nummax, numcomienzo, i, j, k; numcomienzo=1; printf ("Introduzca N: ");scanf ("%d", &nummax); for (i=0;i<nummax;i++) { k=0; for(j=numcomienzo;j<=nummax;j++) { printf ("%d ", j); k++; } for(j=1;j<=nummax-k;j++) printf ("%d ", j); numcomienzo++; printf ("\n"); }return 0;} /*siempre puedes depurar el codigo para, por ejemplo -comprobar la entrada del scanf -contar numero de cifras del máximo y en el printf sacar %nd, donde n es ese numero con lo que conseguirías alinearlo -etc*/
Miguel desde Soria.
franc:
muchas gracias, ya lo he conseguido.
mido_666 tu codigo me ha ayudado, aunque no era lo que queria ( en verdad si pero no imprimia los numeros en el orden que yo queria ).
albany lo de los vectores, lo he intentado pero me fallaban a la hora de imprimir el cuadro.
Gracias a todos :)
mido_666:
Es cierto, franc, tienes razón; no me fijé en el orden, pensé que iban añadiendo uno.
Soy consciente además de que no es la única forma de hacerlo (también se podría comprobar el último numero que se escribió y empezar por ahí) pero también se puede añadir una variable y un par de líneas de código para solventar el problema;
sé que ya lo has solucionado tú, probablemente de otra forma diferente, pero por si a alguien le interesa el código que mande con sus arreglos correspondientes, lo adjunto aquí abajo.
--- Código: Text --- #include <stdio.h> /* Cuadro Latino */ int main(void){int nummax, numcomienzo, i, j, k, l; /*solo necesitaba una variable mas para llevar la cuenta */ numcomienzo=1;l=0; printf ("Introduzca N: ");scanf ("%d", &nummax); for (i=0;i<nummax;i++) { if(l>0)numcomienzo = nummax - l +1; k=0; for(j=numcomienzo;j<=nummax;j++) { printf ("%d ", j); k++; } for(j=1;j<=nummax-k;j++) printf ("%d ", j); printf ("\n"); l++; /*también eliminé "numcomienzo++;"*/ }return 0;}
Saludos, y perdona las molestias por la equivocación.
Navegación
Ir a la versión completa