Oppure

Loading
23/11/10 13:01
falaskhouse
allora intanto volevo ringraziare tutti coloro che hanno risposto alle mie domande fino ad ora togliendomi molti dubbi... ora ho scritto il codice della prima parte del programma per chi non l'avesse letto è il beccaccino...(sempre che io l'abbia scritto:D) e sono arrivato a questo punto (sotto metto il programma) e non so perché nel segno che metterò di fianco al comando mi si blocca sapete dirmi perché? e non fate caso a quando mostra le carte perché è abbastanza osceno ma volevo solo vedere se funzionava :)
program beccaccino;
uses crt;
var giocatore:array [1..4,1..10] of string;
procedure assmisdis;
var a,b,c,cas:short;
var carta,mischia:array [1..40] of string;
Begin
  mischia[1]:=('A S');  (*assegnazione carte*)
  mischia[2]:=('2 S');
  mischia[3]:=('3 S');
  mischia[4]:=('4 S');
  mischia[5]:=('5 S');
  mischia[6]:=('6 S');
  mischia[7]:=('7 S');
  mischia[8]:=('F S');
  mischia[9]:=('C S');
  mischia[10]:=('R S');
  mischia[11]:=('A D');
  mischia[12]:=('2 D');
  mischia[13]:=('3 D');
  mischia[14]:=('4 D');
  mischia[15]:=('5 D');
  mischia[16]:=('6 D');
  mischia[17]:=('7 D');
  mischia[18]:=('F D');
  mischia[19]:=('C D');
  mischia[20]:=('R D');
  mischia[21]:=('A B');
  mischia[22]:=('2 B');
  mischia[23]:=('3 B');
  mischia[24]:=('4 B');
  mischia[25]:=('5 B');
  mischia[26]:=('6 B');
  mischia[27]:=('7 B');
  mischia[28]:=('F B');
  mischia[29]:=('C B');
  mischia[30]:=('R B');
  mischia[31]:=('A C');
  mischia[32]:=('2 C');
  mischia[33]:=('3 C');
  mischia[34]:=('4 C');
  mischia[35]:=('5 C');
  mischia[36]:=('6 C');
  mischia[37]:=('7 C');
  mischia[38]:=('F C');
  mischia[39]:=('C C');
  mischia[40]:=('R C');
  a:=0;
  repeat              (*mescolamento carte*)
    a:=a+1;
    repeat        (*mi si blocca in questo pezzo quando deve fare la undicesima ripetizione, le prime dieci le fa e poi si ferma*)
      cas:=random(40)+1;
    until carta[cas]='';
    carta[cas]:=mischia[a];
  until a=40;
  a:=0;        (*distribuzione carte ad ogni giocatore*)
  c:=0;
  repeat
    a:=a+1;
    b:=0;
    repeat
      b:=b+1;
      c:=c+1;
      giocatore[a,b]:=carta[c];
    until b=10;
  until a=4;
  a:=0;   (*inizio scrittura carte*)
  y:=1;
  x:=-3;
  repeat
  x:=x+4;
  a:=a+1;
  b:=0;
    repeat
      b:=b+1;
      y:=y+1;
      gotoxy(x,y);
      write(giocatore[a,b]);
    until b=10;
  until a=4;
End;
Begin
  clrscr;
  assmisdis;
  readkey;
End.
Ultima modifica effettuata da Phi 16/01/11 22:07
aaa
23/12/10 15:33
Phi
Il codice è troppo lungo.
Io lo modificherei così :

1)
dichiarei x e y fra le variabili (a me da errore di compilazione)
2)
sostituirei i "repeat ... until" con dei cicli for
3)
Al posto di tutti i passaggi del tipo "mischia[1]:=" farei così
Dichiaro queste constanti
const
f:array[1..10] of char=('A' ,'2','3','4','5','6','7','F','C','R');
s:array[0..3] of char=('S', 'D','B','C');

E, a inizio della procedura assmisdis, scriverei:
 for a := 0 to 3 do for b := 1 to 10 do 
  mischia[a*10+b]:=concat(f[b],' ',s[a]);

4)
per essere sicuro inserirei, sempre a inizio di assmisdis, questo codice:
 for a := 1 to 40 do carta[a]:='';



Una volta apportate le modifiche a me non dà più nessun errore.
Il programma risulterebbe così:

Program beccaccino;
uses crt;

var giocatore:array [1..4,1..10] of string;

procedure assmisdis;
var a,b,c,cas, x, y:shortint;
var carta,mischia:array [1..40] of string[3];

const
f:array[1..10] of char=('A' ,'2','3','4','5','6','7','F','C','R');
s:array[0..3] of char=('S', 'D','B','C');

Begin
 for a := 1 to 40 do carta[a]:='';
 for a := 0 to 3 do for b := 1 to 10 do 
   mischia[a*10+b]:=concat(f[b],' ',s[a]);
 for a := 1 to 40 do begin
  repeat
   cas:=random(40)+1;
  until carta[cas]='';
  carta[cas]:=mischia[a];
 end;
 c:=0;
 for a := 1 to 4 do begin
  b:=0;
  for b := 1 to 10 do begin
   c:=c+1;
   giocatore[a,b]:=carta[c];
  end;
 end;
 a:=0;
 y:=1;
 x:=-3;
 for a := 1 to 4 do begin
  x:=x+4;
  for b := 1 to 10 do begin
   y:=y+1;
   gotoxy(x,y);
   write(giocatore[a,b]);
  end;
 end;
End;

Begin
  clrscr;
  assmisdis;
  readkey;
End.
Ultima modifica effettuata da Phi 23/12/10 15:34
aaa