Oppure

Loading
29/01/13 16:37
Parma98
salve a tutti, non riesco proprio a capire dove ho sbagliato, ecco il codice:
program ConnettiviLogici;
uses crt;
var a,b,c:integer;
begin
  clrscr;
  writeln('Immetti un numero:');
  readln(a);
  writeln('Immetti un altro numero:');
  readln(b);
  writeln('Immetti un altro numero ancora:');
  readln(c);
  if (a=b) and (b<c) then
    writeln('Se state leggendo questa frase significa che (a=b) e (b<c).');
    (*blocco di istruzioni numero 1*)
    readln
    end.
  else
    begin
    if (a<b) or (c>a) then
    writeln('Se state leggendo questa frase significa che (a<b) o (c>a).');
    (*blocco di istruzioni numero 2*)
    readln
    end.
  else
    begin
    if (c>a) xor (b=c) then
    writeln('Se state leggendo questa frase significa che (c>a) o (b=c).');
    (*blocco di istruzioni numero 3*)
    readln
    end.
end.


in pratica il risultato dovrebbe essere che tu inserisci tre numeri e ti viene mostrata una frase a seconda dei numeri immessi.
il problema è che il programma ti chiede i tre numeri e poi si chiude senza dire nient'altro.
invece dovrebbe continuare...:om:
grazie a chiunque mi risponda. ciao!
Ultima modifica effettuata da Phi 29/01/13 16:47
aaa
29/01/13 16:45
Phi
Sbagli qui:
 if (a=b) and (b<c) then
    writeln('Se state leggendo questa frase significa che (a=b) e (b<c).');
    (*blocco di istruzioni numero 1*)
    readln
    end.


La sintassi di ifthenelse con più istruzioni è la seguente :
if condizione then begin
//istruzioni
end
else
begin
//istruzioni
end;


Attento end con il punto viene posto solamente alla fine del main, quello che scrivi dopo un end. è come se non fosse scritto

P.S. Non serve scrivere il titolo in maiuscolo
Ultima modifica effettuata da Phi 29/01/13 16:46
aaa
30/01/13 13:24
nerd
hai fatto un po di casino con i then... quando metti dei blocchi di codice dopo ad esempio then devi mettere un 'begin' e quando hai finito 'end;' , poi prima dell' 'else' non va mai messo il ';'
io ho corretto il codice, siccome a certa gente vuole arrivarci da sola non ti scrivo il codice, se vuoi comunque te lo carico :)

[url]mega.co.nz/
[/url]
Ultima modifica effettuata da nerd 30/01/13 13:26
aaa
30/01/13 14:24
Parma98
scusate un attimo, ma se ho l' 'end;' alla fine del blocco e dopo ho subito 'else', non ha senso; perche se metto il punto e virgola dopo l' end mi dice errore (perche else non lo vuole) e se non lo metto mi dice comunque errore(perche end lo vuole) .
non saprei come risolvere...
aaa
30/01/13 15:29
Phi
No, sbagli, prima di un else non va mai il punto e virgola anche se prima c'è un end.
Se aggiungi anche il begin dopo il then tutto funziona, poi ti sei pure dimenticato dei ";" dopo i "readln" :
if (a=b) and (b<c) then begin
      writeln('Se state leggendo questa frase significa che (a=b) e (b<c).');
      (*blocco di istruzioni numero 1*)
      readln;
end else begin
      if (a<b) or (c>a) then begin
            writeln('Se state leggendo questa frase significa che (a<b) o (c>a).');
            (*blocco di istruzioni numero 2*)
            readln;
      end else begin
            if (c>a) xor (b=c) then
            writeln('Se state leggendo questa frase significa che (c>a) o (b=c).');
            (*blocco di istruzioni numero 3*)
            readln;
      end;
end;
aaa