Pagina 1 di 1
[RISOLTO] Problema programma in Pascal
Inviato: venerdì 23 maggio 2014, 16:06
da alessandro 22
Salve a tutti,
vi spiego il mio problema: devo scrivere un programma in pascal che calcoli la media di n voti e ne calcoli la media, se la media è maggiore di 6 scrivi promosso altrimenti bocciato.
il professore ci ha detto di scriverlo usando 1 volta il repeat...until e un'altra con il for.
vi mostro quello che ho fatto:
Codice: Seleziona tutto
programm input_output(input, output) ;
var
n,voto,media,somm, i :integer ;
begin
writeln('inserisci numero di voti')
readln (n) ;
for i:=0 to n do
begin
writeln('Inserisci voto') ;
readln (voto) ;
somm:=voto+somm ;
end
readln;
media:= somm/n;
if media <= 6
then
writeln ('promosso')
else
writeln ('bocciato') ;
readln ;
end.
con repeat ci sono riuscito con for mi da errore, ho postato il codice.
Grazie in aticipo.
Re: Problema programma in Pascal
Inviato: venerdì 23 maggio 2014, 18:28
da ixamit
Non mi ricordo se vanno inizializzate le variabili, ma l'errore che segnali e' dovuto alla variabile voto che non e' dichiarata
Re: Problema programma in Pascal
Inviato: venerdì 23 maggio 2014, 20:13
da alessandro 22
come dovrei fare?
Re: Problema programma in Pascal
Inviato: venerdì 23 maggio 2014, 20:44
da Bianco95
alessandro 22 potresti postare l'errore che ti dà??

Re: Problema programma in Pascal
Inviato: venerdì 23 maggio 2014, 21:03
da ixamit
io avevo visto
vot non
voto... non e' che e' stato rimodificato il sorgente?
poi dovresti controllare i limiti di iterazione:
Re: Problema programma in Pascal
Inviato: venerdì 23 maggio 2014, 21:11
da Bianco95
Comunque in teoria il tuo ciclo fa un giro in più...quindi ti fa inserire un voto in più perchè fai partire il ciclo da 0 fino al numero di voti
Poi, molto importante anche per le prossime volte

, cerca di inizializzare sempre le variabili perchè altrimenti potrebbero darti dei problemi
quindi per concludere fai partire il ciclo da 1 e inizializza la variabile somm:=0 prima del ciclo
Re: Problema programma in Pascal
Inviato: venerdì 23 maggio 2014, 21:15
da Bianco95
Anche l'if è sbagliato perchè se la media è minore di 6 allora sei promosso...

un pò strano
quindi modifica la condizione dell'if con media>=6
Re: Problema programma in Pascal
Inviato: venerdì 23 maggio 2014, 21:24
da alessandro 22
gli errori sono questi: error: illegal assignment to for-loop variable "i"
fatal: syntax error, ":" expected but "." found
per quanto riguarda l'if qua ho scritto male ma sul programma è giusto (scusate)
vot l'ho corretto in voto per una svista.
Ricapitolando il codice dovrà essere così:
Codice: Seleziona tutto
programm input_output(input, output) ;
var
n,voto,media,somm, i :integer ;
begin
writeln('inserisci numero di voti')
readln (n) ;
for i:=1 to n do
begin
writeln('Inserisci voto') ;
readln (voto) ;
somm:=voto+somm ;
end
readln;
media:= somm/n;
if media >= 6
then
writeln ('promosso')
else
writeln ('bocciato') ;
readln ;
end.
Re: Problema programma in Pascal
Inviato: venerdì 23 maggio 2014, 21:34
da Bianco95
Ho un altro appunto da farti mancano diversi ; (punti e virgola)
dopo writeln('inserisci numero di voti'), dopo l'end del ciclo e dopo writeln ('promosso')...

Re: Problema programma in Pascal
Inviato: venerdì 23 maggio 2014, 21:51
da ixamit
1) Usi / nella divisione con operandi interi, ma il risultato e' di tipo real.
2) Program
m (doppia emme)
scusa... ma con cosa stai compilando?!?!
wiki
Codice: Seleziona tutto
Program ciclo_for;
var i, n, num:integer;
begin
write('quanti numeri vuoi inserire?');
readln(n);
for i:=1 to n do
begin
write('inserisci il numero: ')
readln(num);
end;
readln;
end.
Re: Problema programma in Pascal
Inviato: venerdì 23 maggio 2014, 22:36
da alessandro 22
Sto compilando con dev Pascal
Gli errori di ; e altro genere è perché non mi fave copiare il codice e quindi lo ho riscritto adesso vi mando una foto
Re: Problema programma in Pascal
Inviato: sabato 24 maggio 2014, 20:57
da alessandro 22
Codice: Seleziona tutto
program professore;
var
n, voto, media, somm, i :real;
begin
writeln('inserisci numero di voti');
readln(n);
repeat
writeln('inserisci voto');
readln(voto);
somm:=voto+somm;
i:=i+1;
until i=n;
media:= somm/n;
if media >=6
then
writeln('promosso')
else
writeln('bocciato');
readln;
end.
questo è il codice utilizzando repeat (senza errori)
come dovrei fare utilizzando il for?
Grazie!

Re: Problema programma in Pascal
Inviato: sabato 24 maggio 2014, 21:15
da alessandro 22
Codice: Seleziona tutto
program professore;
var
n, voto, media, somm, i :real;
begin
writeln('inserisci numero di voti');
readln(n);
for i:=1 to n do
begin
writeln('inserisci voto');
readln(voto);
somm:=voto+somm;
i:=i+1;
end
media:= somm/n;
if media >=6
then
writeln('promosso')
else
writeln('bocciato');
readln;
end.
ho scritto questo ma non funziona:
Fatal: Syntax error, ; expected but identifier MEDIA found
scusate per tutte questo domande ma son agli inizi
Re: Problema programma in Pascal
Inviato: sabato 24 maggio 2014, 21:36
da Bianco95
Perchè incrementi la i all'interno del ciclo...il for è un ciclo autoincrementante...i:=i+1 non serve anzi è sbagliato perchè ti farebbe inserire sono metà dei voti...
In più come ti ho già detto ieri devi mettere il ; dopo l'end del ciclo

Re: Problema programma in Pascal
Inviato: sabato 24 maggio 2014, 21:47
da Bianco95
Prova così ma non ti assicuro che funzioni perchè non l'ho provato...
Codice: Seleziona tutto
program professore;
var
voto, media, somm :real;
n, i : integer;
begin
writeln('inserisci numero di voti');
readln(n);
somm:=0;
for i:=1 to n do
begin
writeln('inserisci voto');
readln(voto);
somm:=voto+somm;
end;
media:= somm/n;
if media >=6 then
writeln('promosso')
else
writeln('bocciato');
readln;
end.
Re: Problema programma in Pascal
Inviato: domenica 25 maggio 2014, 12:24
da alessandro 22
Grazie mille, funziona!
Quindi mi devo ricordare il ; dopo end e non mettere mai i:=i+1 in un ciclo for
Re: [RISOLTO] Problema programma in Pascal
Inviato: lunedì 2 giugno 2014, 13:52
da Bianco95
Felice di esserti stato d'aiuto

Re: [RISOLTO] Problema programma in Pascal
Inviato: lunedì 2 giugno 2014, 15:03
da alessandro 22