SoloCodigo

Programación General => Pascal => Mensaje iniciado por: ALCEST en Sábado 25 de Agosto de 2007, 23:11

Título: Tipos De Datos
Publicado por: ALCEST en Sábado 25 de Agosto de 2007, 23:11
Me piden que defina tipos para un registro con número y palo de naipe

alguien me recomienda algo mejor q lo siguiente?

Citar
program palo_diamante;
uses
        crt;
type
        rango = 1..13;
        vector=array[rango] of string;
        diamantes = record
                vec_diamantes:vector;
                end;



var
        palo_diamantes:diamantes;
        i:byte;

begin
     clrscr;
     with palo_diamantes do
        begin
            vec_diamantes[1]:='As';
            vec_diamantes[2]:='2';
            vec_diamantes[3]:='3';
            vec_diamantes[4]:='4';
            vec_diamantes[5]:='5';
            vec_diamantes[6]:='6';
            vec_diamantes[7]:='7';
            vec_diamantes[8]:='8';
            vec_diamantes[9]:='9';
            vec_diamantes[10]:='10';
            vec_diamantes[11]:='Valet';
            vec_diamantes[12]:='Dame';
            vec_diamantes[13]:='Roi';
        end;
     writeln('Palo de diamantes: ');
     writeln('---- -- --------- ');
     with palo_diamantes do
        for i:=1 to 13 do
          begin
              write('Carta Nº ',i,': ');
              writeln(vec_diamantes,' de Diamantes');
          end;
     readln;
end.

saludos y gracias!
Título: Re: Tipos De Datos
Publicado por: Enko en Domingo 26 de Agosto de 2007, 01:10
Se me hace que para el caso viene bien una enumeracion como tipo para el Palo.
Código: Text
  1.  
  2. type
  3.    TPalo =(espada,basto,oro,copa);
  4.    TNaipe = record
  5.         Num: Byte;
  6.         Palo: TPalo;
  7.     end;
  8.     TBaraja = array[1..40] of TNaipe;
  9.  
  10. o bien, TPalo puede ser byte:
  11. 0: espada
  12. 1: basto
  13. 2: oro
  14. 3: copa
  15. pero en realidad con una enumeracion es exactamente lo mismo porque
  16. si el palo es Espada por ejemplo Ord(TPalo)=0
  17.  
  18.  
Este codigo iniciaria la baraja y la mostraria en la pantalla.

Código: Text
  1.  
  2. var
  3.   Baraja: TBaraja;
  4.   I: Integer;
  5.   Palo: String;
  6. begin
  7.   for i:=1 to 10 do
  8.   begin
  9.       Baraja[i].Palo = espada;
  10.       Baraja[i].Num = i;
  11.       Baraja[10+i].Palo = basto;
  12.       Baraja[10+i].Num = i;
  13.       Baraja[i+20].Palo = oro;
  14.       Baraja[i+20].Num = i;
  15.       Baraja[i+30].Palo = copa;
  16.       Baraja[i+30].Num = i;
  17.    end;
  18. for i:=1 to 40 do
  19. begin
  20.     case Baraja[i].Palo of
  21.        0: Palo := 'Espada';
  22.        1: Palo := 'Basto';
  23.        2: Palo := 'Oro';
  24.        3: Palo := 'Copa;
  25.       end;
  26.       WriteLn(i, ': ', Baraja[i].Num, '   ', Palo);
  27. end;
  28.  
  29.