Ejercicio en C

Iniciado por ߣ@î§, 17 Julio 2005, 18:53 PM

0 Miembros y 1 Visitante están viendo este tema.

ߣ@î§

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  ;)
:D >:( ::) :-( ;D :huh: :-* :-X :rolleyes: :( :o :) :P :-\ ;) :-[ :xD :¬¬

Kpax

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
En este mundo una de dos

ߣ@î§

#2
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".. ;)
:D >:( ::) :-( ;D :huh: :-* :-X :rolleyes: :( :o :) :P :-\ ;) :-[ :xD :¬¬

ߣ@î§

joer!! no sale este caracter
  • ... (los corchetes) :( ???
:D >:( ::) :-( ;D :huh: :-* :-X :rolleyes: :( :o :) :P :-\ ;) :-[ :xD :¬¬