Pos aca les va uno que estaba haciendo:
Crear un programa en C que despliegue el cuadro latino dado un numero "n".
Definición
Un cuadro latino es un arreglo de "n" símbolos en "n2" celdas arregladas en un cuadrado de filas y columnas, tal que todo símbolo aparece una sola vez en cada fila y en cada columna. El término "n" se conoce como el orden del cuadro latino.
Pos pa entenderlo mejor:
si n= 3 el cuadro quedaria asi:
1 2 3
3 1 2
2 3 1
pa ponerle limites "n" debe ser mayor de 1 (obvio) y menor de 21 para que no salga tan grusea la matriz ;D ;D
en unos dias lo termino y lo posteo por aca, a ver si alguien lo termina antes.... ;)
Saludos ;)
Esta en funcion de las diagonales :
para n
1)paso
1
1
...
1 ->n-esima posicion
2)paso
1 2->obs arrancas por aca
2 1
2 ...
2 1 ->n-esima posicion
3)
°->arrancas de aca
1 3 2 ->obs arrancas por aca
2 1 3
3 2 ...
3 ...
3 2 1 ->n-esima posicion
Te das cuenta como colocarlos...de hehco que los pones en un arreglo.
Si deseas solo colocarlos...creo q puedes deducir la ley de formacion(no esta dificil eh)
ayuda:
1 n n-1 n-2 .... 2
saludos
jeje perdon me habia olvidado de este post.... y ya lo tenia listo hace unos dias ;D
Citar#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
void main()
{
clrscr();
int c,x,y;
int a,a1,a2,a3;
int b[20][20]={0};
char respuesta[20];
char s='A';
while (s!='s' && s!='S')
{
textcolor(LIGHTGRAY);
gotoxy(2,2);cprintf("Introduzca un n£mero para crear el cuadrado latino");
gotoxy(2,3);cprintf("N£mero (2-19):");
fflush(stdin);
scanf("%[^\n]",respuesta);
a=atoi(respuesta);
a1=strlen(respuesta);
a2=0;
for (x=0;x<a1;x++)
{
for (y=48;y<=57;y++)
{
if (respuesta- ==char(y))
a2++;
}
}
while ((a2!=a1) || (a>19 || a<=1) || respuesta[0]=='0')
{
gotoxy(2,5);cprintf("EL DATO INTRODUCIDO ES INCORRECTO");
gotoxy(2,6);cprintf("EL DATO TIENE QUE SER UN NéMERO NATURAL MAYOR QUE 1 Y MENOR QUE 20");
gotoxy(2,7);cprintf("PRESIONE ENTER");
getch();
clrscr();
textcolor(LIGHTGRAY);
gotoxy(2,2);cprintf("Introduzca un n£mero para crear el cuadrado latino");
gotoxy(2,3);cprintf("N£mero (2-19):");
fflush(stdin);
scanf("%[^\n]",respuesta);
a=atoi(respuesta);
a1=strlen(respuesta);
a2=0;
for (x=0;x<a1;x++)
{
for (y=48;y<=57;y++)
{
if (respuesta - ==char(y))
a2++;
}
}
}
int z=2;
for(x=0;x<a;x++)
{
z--;
for(y=0;y<a;y++)
{
if (z>a)
z=1;
b - [y]=z;
z++;
}
}
c=a*4/2;
int d=a/2;
clrscr();
textcolor(GREEN);
gotoxy(24,10-d);
cprintf(" CUADRADO LATINO DE ORDEN \"n\"");
gotoxy(24,11-d);
cprintf(" n = %d ",a);
for(x=0;x<a;x++)
{
textcolor(LIGHTRED);
if (x==0)
{
gotoxy(40-c,12-d+x);
cprintf("Ú");
}
if (x==a-1)
{
gotoxy(40-c,14-d+x);
cprintf("À");
}
gotoxy(40-c,13-d+x);
cprintf("³");
for( y=0;y<a;y++)
{
textcolor(LIGHTBLUE);
cprintf("%3d ",b - [y]);
}
textcolor(LIGHTRED);
cprintf(" ³");
if (x==0)
{
gotoxy(40+c,12-d+x);
cprintf(" ¿");
}
if (x==a-1)
{
gotoxy(40+c,14-d+x);
cprintf(" Ù");
}
}
textcolor(YELLOW);
gotoxy(3,24);
cprintf("CONTINUAR = ENTER SALIDA = S");
s=getch();
textcolor(LIGHTGRAY);
clrscr();
}
}
Solo era de "cruzar bucles".. ;)
joer!! no sale este caracter
- ... (los corchetes) :( ???