|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Sep 2009
Messaggi: 3627
|
[PASCAL]Problema programma per scuola...
Questo è il programma:
Codice:
Program Votazione; var conta,TV1,TV2,TV3,TV4,X,MAXVOTI :integer; NOME1,NOME2,NOME3,NOME4 :string; Begin; conta:=0; TV1:=0; TV2:=0; TV3:=0; TV4:=0; Write('Scrivi il numero massimo dei voti da effettuare'); Readln(MAXVOTI); Write('Scrivi il nome del primo candidato: ',NOME1); Readln(NOME1); Write('Scrivi il nome del secondo candidato: ',NOME2); Readln(NOME2); Write('Scrivi il nome del terzo candidato: ',NOME3); Readln(NOME3); Write('Scrivi il nome del quarto candidato: ',NOME4); Readln(NOME4); repeat Writeln('Seleziona quale candidato votare:'); Writeln( '1.'NOME1); Writeln( '2.'NOME2); Writeln( '3.'NOME3); Writeln( '4.'NOME4); Read(X); if X:=1 then TV1:=TV1+1 else if X:=2 then TV2:=TV2+1 else if X:=3 then TV3:=TV3+1 else if X:=4 then TV4:=TV4+1 else Write('Operazione non riuscita') conta:=conta+1 until MAXVOTI:=conta Writeln('Risultato delle operazioni: ') Writeln( NOME1,'ha ricevuto' ,TV1, 'voti') Writeln( NOME2,'ha ricevuto' ,TV2, 'voti') Writeln( NOME3,'ha ricevuto' ,TV3, 'voti') Writeln( NOME4,'ha ricevuto' ,TV4, 'voti') readln END. ![]() Aiutaremi please ![]() Ultima modifica di >>The Red<< : 11-11-2009 alle 15:54. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
|
non è
until MAXVOTI:=conta ma è until MAXVOTI=conta un consiglio, invece di usare mille if else usa un case mancano anche i punto e virgola nelle ultime istruzioni P.S.: la prossima volta posta anche l'errore che ricevi ------EDIT------ questo è il codice corretto per intero: Codice:
Program Votazione; var conta,TV1,TV2,TV3,TV4,X,MAXVOTI :integer; NOME1,NOME2,NOME3,NOME4 :string; Begin; conta:=0; TV1:=0; TV2:=0; TV3:=0; TV4:=0; Write('Scrivi il numero massimo dei voti da effettuare'); Readln(MAXVOTI); Write('Scrivi il nome del primo candidato: ',NOME1); Readln(NOME1); Write('Scrivi il nome del secondo candidato: ',NOME2); Readln(NOME2); Write('Scrivi il nome del terzo candidato: ',NOME3); Readln(NOME3); Write('Scrivi il nome del quarto candidato: ',NOME4); Readln(NOME4); repeat Writeln('Seleziona quale candidato votare:'); Writeln( '1.',NOME1); Writeln( '2.',NOME2); Writeln( '3.',NOME3); Writeln( '4.',NOME4); Read(X); if (X=1) then TV1:=TV1+1 else if (X=2) then TV2:=TV2+1 else if (X=3) then TV3:=TV3+1 else if (X=4) then TV4:=TV4+1 else Write('Operazione non riuscita'); conta:=conta+1 until (MAXVOTI=conta); Writeln('Risultato delle operazioni: '); Writeln( NOME1,'ha ricevuto ',TV1,' voti'); Writeln( NOME2,'ha ricevuto ',TV2,' voti'); Writeln( NOME3,'ha ricevuto ',TV3,' voti'); Writeln( NOME4,'ha ricevuto ',TV4,' voti'); read(); END. -avevi dimenticato le virgole per la concatenazione delle variabili nelle istruzioni appena dentro al repeat per quanto riguarda gli if io ti consiglio di mettere le condizioni dentro alle tonde. insoltre non prevedi il caso che io inserisca un numero non previsto, se per esempio io scrivo 5 non siccede niente, potresti visualizzare un warning e chiedere di riprovare. per ora non mi viene in mente altro. Ultima modifica di kurts : 11-11-2009 alle 18:55. |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Sep 2009
Messaggi: 3627
|
Quote:
Perche devo usare le parentesi tonde? Cosa è un case? Ora lo provo e ti faccio sapere ![]() Grazie^^ ![]() |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
|
-si, l'ho provato, certo!
-le parentesi tonde le "devi" usare perchè ti danno una mano con le espressioni complesse ovvero quando hai molti AND/OR/NOT, senza contare il fattore chiarezza -questo è un case, ti serve per evitare millemila if/else annidati uno dentro l'altro, anche in questo caso ne guadagni anche in termini di chiarezza del codice resto in attesa di tue notizie prego |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Sep 2009
Messaggi: 3627
|
Quote:
Qui mi da questo errore http://img80.imageshack.us/i/immaginehe.png/ Con un altro compilatore mi dava solo l'errore dele parentesi all'ultimo read. Poi,quando lo eseguo,tutto va bene ma quando mi sta per stampare i risultati del sondaggio si chiude il programma...sai perchè? Ultima modifica di >>The Red<< : 11-11-2009 alle 20:47. |
|
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
|
Quote:
Quote:
ai tempi (parlo di 4 o 5 anni fa) avevo notato anche io che il dev-pascal dava qualche provlema con read/readln vuote e anche con varie funzioni di librerie esterne, ti consiglio di usare freepascal oppure quello ufficiale della borland. il programma si chiude perchè non ha niente da fare, se lo riapri vedrai i risultati scritti sopra. prova ad usare una readkey (forse keypsess) al posto del read() finale, in questo modo il programma resterà in attesa che l'utente prema un tasto, dovrai importare una libreria ma purtroppo non mi sicordo il nome... |
||
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Sep 2009
Messaggi: 3627
|
Quote:
![]() Ho scaricato il pascal che sta sul link,funziona tutto... Credo che domani farò una bella figura con la prof. ![]() ![]() ![]() |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
|
che pascal?
che link? che prof? |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Sep 2009
Messaggi: 3627
|
il secondo link,il primo non funzona http://www.pierotofy.it/pages/guide/...rogrammazione/
Credo sia DEVPASCAL La mia professoressa di informatica ![]() Ultima modifica di >>The Red<< : 11-11-2009 alle 21:26. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:59.