PDA

Visualizza la versione completa : Errore In Un File Di Turbo Pascal... Aiuto??!!!!!


Ricky_13
31-12-2008, 12:06
allora salve a tutti sono nuovo e ho bisogno di una mano.. spero che qualcuno di voi riesca ad aiutarmi! ecco il mio problema: ho scritto il seguente codice sorgente in pascal (compilatore TP7) ma mi da un errore..:dhò: qualcuno di voi riesce a darmi una mano.. perfavore.!!!!!!
ecco il file sorgente:

program pizza;
uses crt;
var number : integer;
size : string[1];
total : real;
begin
clrscr;
write(' inserire il numero delle pizze! ');
readln(number);
write(' inserire la taglia della pizza: ');
writeln(' Small 4.50 ');
writeln(' Medium 6.00 ');
writeln(' Large 7.50 ');
write(' inserire la tua scelta(s,m or l); ');
readln(size);
if size = 's' then total := number = 4.50
else if size = 'm' then total := number = 6.00
else if size = 'l' then total := number = 7.50
else write(' la scelta inserita non è valida ');
writeln;
write(numero, ' pizza costa,');
readln;
end.

P.S: per una mano intendo la risoluzione del problema cioè farmi funzionare il programma!
GRAZIE IN ANTICIPO!!!!!!!!!!!

MacApp
31-12-2008, 12:53
Originariamente inviato da Ricky_13
ho scritto il seguente codice sorgente in pascal (compilatore TP7) ma mi da un errore..
L'errore dobbiamo indovinarlo?

Metflar
31-12-2008, 12:59
non conosco pascal ma la variabile numero non esiste nel tuo codice :D

pallinopinco
31-12-2008, 13:18
ma mi da un errore.


Quale errore? Non hai neanche formattato il codice con il tag [CODE]...

Ricky_13
31-12-2008, 15:25
avete ragione mi sono dimenticato di dirvi l'errore...
allora quando clicco su run mi dice... error 26:type mismatch e posiziona il "puntatore" sul primo ELSE
comunque io sono all'inizio della programmazione in Turbo Pascal e vi chiedo scusa per la mia ignoranza ma non so ancora molto... cosa vuol dire "formattare il codice con il tag [CODE]"

P.S: questo codice sorgente lo ho copiato da un video che ho trovato su internet.. e comincio anche io a capirlo...

pallinopinco
31-12-2008, 15:52
questo codice sorgente lo ho copiato da un video che ho trovato su internet


Se non hai apportato alcuna modifica al sorgente ti consiglio di cancellare il video, il codice è sbagliato.

Prova a chiederti cosa dovrebbe fare la riga:

total := number = 4.50

Inoltre nell'ultima chiamata alla funzione write hai sostituito la variabile number con numero. Ti consiglio di gestire gli IF/ELSE all'interno di un ciclo, in modo da proseguire con la visualizzazione del totale SOLO nel caso di scelta valida.

Ricky_13
31-12-2008, 16:51
...il video non lo ho postato io e non posso cancellarlo... (sarà stato uno sciocco)

secondo me la riga if size = 's' then total := number := 4.50 dovrebbe stampare sul lo schermo il numero 4.50 solo se il valore precedentemente inserito ovvero size è uguale a "s" cioè small se no grazie alla riga else if size = 'm' then total := number := := 6.00 si stamperebbe sullo schermo il valore 6.00 se il valore precedentemente inserito ovvero size è uguale a m cioè medium, e così via...

il compito del programma è quello di una cassa (da quello che ho capito) perchè ti dice quanto costano x pizze di y taglia

quindi secondo te dovrei togliere la riga else write(' la scelta inserita non è valida '); ok lo farò


ultima cosa: dato che mi sembra che tu sia un esperto del Pascal mi puoi spiegare la differenza tra "write" e "writeln" ???

grazie in anticipo !!!

pallinopinco
31-12-2008, 17:06
Ho dato una veloce ripulita al codice (si può migliorare ma devo prepararmi per la serata):



program pizza;

uses crt;

var
number: integer;
size: char; {Una stringa formata da un solo carattere è un CHAR}
total: Real;

begin
total := 0;
clrscr;
Write(' Inserire il numero delle pizze: ');
Readln(number);
Writeln(' Inserire la taglia della pizza: ');
Writeln(' Small 4.50 ');
Writeln(' Medium 6.00 ');
Writeln(' Large 7.50 ');
repeat {Con questo repeat eviti errori di digitazione dell'utente}
Write(' Inserire la tua scelta(s,m or l); ');
Readln(size);
if size = 's' then
total := number * 4.50
else if size = 'm' then
total := number * 6.00
else if size = 'l' then
total := number * 7.50
else
Write(' la scelta inserita non è valida ');
until total > 0;
Writeln;
Write(number, ' pizze costano ', total:3:2); {Stampa correttamente il totale}
Readln;
end.




mi puoi spiegare la differenza tra "write" e "writeln" ???


Sul tuo libro non viene spiegata tale differenza?! :confused:



...il video non lo ho postato io e non posso cancellarlo... (sarà stato uno sciocco)


Mi riferivo al fatto di cancellarlo dal tuo disco, dalla tua memoria, dalla tua vista...



secondo me la riga if size = 's' then total := number := 4.50 dovrebbe stampare sul lo schermo il numero 4.50


E come potrebbe stampare qualcosa quella riga?! E' sbagliata perché contiene 2 assegnazioni, peraltro tra tipi di dato incompatibili.

Ricky_13
31-12-2008, 17:20
UAOH... c'erano parecchi errori... cmq grazie mille sei stato davvero in gamba!
ok ora me lo guardo bene e lo analizzo!

io non ho un libro.. lo studio sulla programmazione che sto facendo è da autodidatta non ho mai avuto un insegnante..(sighh)

ah ho provato il file è funziona davvero bene..perfettamente..ora lo sistemo un pò(graficamente)

arrivederci..anzi arrisentirci e buona serata!

pallinopinco
31-12-2008, 17:43
io non ho un libro


Male, molto male. Non si può imparare a programmare senza un valido supporto didattico. Non ha alcun senso cercare di "far funzionare" codice preso chissà dove, scritto da chissà chi e chissà come. Procurati un buon libro...

Loading