Está en la página 1de 3

problema en C urgente!!!!!

Usuario

hola me llamo eduardo soy de chile, y estudio informatica.bueno tengo que resolver un ejercicio y me gustaria que me ayudaras. el problema es el siguiente: hacer un programa que imprima un cuadrado latino de orden N. un cuadrado latino de orden N es una matriz cuadrada con la que su primera fila contiene los N primeros numeros naturales y cada una de las siguientes N-1 filas contiene la rotacion de la fila anterior un lugar a la derecha. (obligadamente debo implementarlo con arreglos o matrices, porque es la materia que me esta pasando ahora) ojala me pudieras ayudar,diciendome como puedo resolver este problema.Recien estoy empezando con C. un saludo desde Chile. eduardo millalonco

Experto

Hola eduardo: Vamos a ver si comprendo el problema. Por ejemplo, para N=6, la matriz sera 123456 012345 001234 000123 000012 000001 Correcto?

Usuario

si pero en ves de los ceros (0), tiene que continuar los numeros: 123456 612345 561234 456123 345612 234561 ayudame porfavor, esto esta mu dificil saludos y gracias eamd

Experto

Ahora mismo slo se me ocurre el siguiente algoritmo: inicio m <-- n p <-- n para i de 1 a m hacer para j de 1 a n hacer si i=1 entonces matriz[j] <-- j sino si matriz[i-1][j-1]=1 entonces matriz[j] <-- n sino matriz[j] <-- matriz[i-1][j-1] - 1

finsi finpara finpara fin No lo he probado; no s si funcionar; lo he hecho a ojo. Implemntalo en C y prubalo. Ten en cuenta que en C los ndices comienzan en cero. Si me das tiempo, te lo traduzco a C, es que ahora mismo estoy ocupadillo. Espero que te sirva. Un saludo.

Usuario

ok, muchas gracias nos comunicamos, en cualquier caso mi mail:bojko120@hotmail.com. salu2 eamd

Experto

Ah van el algoritmo y su implementacin en C ya corregidos: inicio para i de 1 a n hacer para j de 1 a n hacer si i=1 entonces matriz[j] <-- j sino si matriz[i-1][j]=1 entonces matriz[j] <-- n sino matriz[j] <-- matriz[i-1][j] - 1 finsi finpara finpara fin main() { int **matriz; int n, i, j; system("clear"); printf("Introduzca 'n': "); scanf("%d", &n); printf("\n"); matriz=(int **)malloc(n*(sizeof(int *))); for(i=0;i<n;i++) matriz=(int *)malloc(n*(sizeof(int))); for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i==0) matriz[j]=j+1; else if(matriz[i-1][j]==1) matriz[j]=n; else matriz[j]=matriz[i-1][j]-1; printf("%d ", matriz[j]); } printf("\n");

} printf("\n"); }

Cdigo C para el problema del cuadrado latino


Publicado por Aquiles en 13 de abril 2010

Un cuadrado latino es una tabla de n n llenos de n smbolos diferentes, de tal manera que cada smbolo se produce exactamente una vez en cada fila y una sola vez en cada columna. Aqu est un ejemplo: 123 231 123 El cdigo C para la aplicacin de la Plaza de Amrica problema se presenta a continuacin. # Include "stdio.h" # Define n 8 int main () { int i, j, a [n] [n]; printf ("programa para imprimir la matriz latina n * n"); for (i = 0; i <n; i + +) for (j = 0; j <n, j + +) { a [i] [j] = (i + j + n-1)% n; } for (i = 0; i <n; i + +) { printf ("\ n"); for (j = 0; j <n, j + +) printf ("% d", a [i] [j]); } return 0; }

También podría gustarte