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à?? :D :ciao:

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:

Codice: Seleziona tutto

 for i:=0 to n do

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 :cry:

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... :lol: :lol: 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')... :ciao:

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) Programm (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! :D

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 :ciao:

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 :ciao: :D

Re: [RISOLTO] Problema programma in Pascal

Inviato: lunedì 2 giugno 2014, 15:03
da alessandro 22