Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - Non capisco dove ho sbagliato!
Forum - Pascal - Non capisco dove ho sbagliato!

Avatar
Parma98 (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/01/2013

Segnala al moderatore
Postato alle 17:37
Martedì, 29/01/2013
salve a tutti, non riesco proprio a capire dove ho sbagliato, ecco il codice:
Codice sorgente - presumibilmente Delphi

  1. program ConnettiviLogici;
  2. uses crt;
  3. var a,b,c:integer;
  4. begin
  5.   clrscr;
  6.   writeln('Immetti un numero:');
  7.   readln(a);
  8.   writeln('Immetti un altro numero:');
  9.   readln(b);
  10.   writeln('Immetti un altro numero ancora:');
  11.   readln(c);
  12.   if (a=b) and (b<c) then
  13.     writeln('Se state leggendo questa frase significa che (a=b) e (b<c).');
  14.     (*blocco di istruzioni numero 1*)
  15.     readln
  16.     end.
  17.   else
  18.     begin
  19.     if (a<b) or (c>a) then
  20.     writeln('Se state leggendo questa frase significa che (a<b) o (c>a).');
  21.     (*blocco di istruzioni numero 2*)
  22.     readln
  23.     end.
  24.   else
  25.     begin
  26.     if (c>a) xor (b=c) then
  27.     writeln('Se state leggendo questa frase significa che (c>a) o (b=c).');
  28.     (*blocco di istruzioni numero 3*)
  29.     readln
  30.     end.
  31. 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 il 29/01/2013 alle 17:47
PM Quote
Avatar
Phi (Member)
Expert


Messaggi: 241
Iscritto: 30/12/2009

Segnala al moderatore
Postato alle 17:45
Martedì, 29/01/2013
Sbagli qui:
Codice sorgente - presumibilmente Pascal

  1. if (a=b) and (b<c) then
  2.     writeln('Se state leggendo questa frase significa che (a=b) e (b<c).');
  3.     (*blocco di istruzioni numero 1*)
  4.     readln
  5.     end.



La sintassi di ifthenelse con più istruzioni è la seguente :
Codice sorgente - presumibilmente Delphi

  1. if condizione then begin
  2. //istruzioni
  3. end
  4. else
  5. begin
  6. //istruzioni
  7. 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 il 29/01/2013 alle 17:46
PM Quote
Avatar
nerd (Normal User)
Newbie


Messaggi: 8
Iscritto: 17/01/2013

Segnala al moderatore
Postato alle 14:24
Mercoledì, 30/01/2013
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 :)

https://mega.co.nz/#!IhFygK4Y!NP4Z3GW-yFceo0_hLzmNpBsz9KsWd ...

Ultima modifica effettuata da nerd il 30/01/2013 alle 14:26
PM Quote
Avatar
Parma98 (Normal User)
Newbie


Messaggi: 6
Iscritto: 11/01/2013

Segnala al moderatore
Postato alle 15:24
Mercoledì, 30/01/2013
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...

PM Quote
Avatar
Phi (Member)
Expert


Messaggi: 241
Iscritto: 30/12/2009

Segnala al moderatore
Postato alle 16:29
Mercoledì, 30/01/2013
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" :
Codice sorgente - presumibilmente Delphi

  1. if (a=b) and (b<c) then begin
  2.       writeln('Se state leggendo questa frase significa che (a=b) e (b<c).');
  3.       (*blocco di istruzioni numero 1*)
  4.       readln;
  5. end else begin
  6.       if (a<b) or (c>a) then begin
  7.             writeln('Se state leggendo questa frase significa che (a<b) o (c>a).');
  8.             (*blocco di istruzioni numero 2*)
  9.             readln;
  10.       end else begin
  11.             if (c>a) xor (b=c) then
  12.             writeln('Se state leggendo questa frase significa che (c>a) o (b=c).');
  13.             (*blocco di istruzioni numero 3*)
  14.             readln;
  15.       end;
  16. end;


PM Quote