PDA

View Full Version : [Pascal] Scuola


NightSilente
22-05-2009, 18:35
Salve Ragazzi ho un piccolo problema con un esercizio in pascal (domani ho un compito e mi serve urgentemente una mano)...
Vi spiego cosa devo fare devo creare un array con l'anno di nascita di N persone .
Poi devo visualizzare la loro età.
Vi posto l'algoritmo in pascal che ho fatto io.

Program data;
type max= 1..100;
vett= array[max] of integer;
var v:vett;
n,an,i,e:integer;
procedure carica_dnascita;
begin
for i:=1 to n do
begin
writeln('Introduci l''anno di nascita');
readln(v[i]);
end;
end;
procedure eta;
begin
e:=an-v[i];
end;
procedure visual_eta;
begin
for i:=1 to n do
begin
writeln(v[an]);
end;
end;
begin
writeln('Il numero di persone');
readln(n);
writeln('Introduci l''anno attuale');
readln(an);
carica_dnascita;
eta;
visual_eta;
readln;
end.

Il problema che non funziona come dovrebbe funzionare mi esce come risultato 0.

Ciampa
22-05-2009, 19:11
ma quando calcoli l'età non dovresti farlo in un ciclo for ? non puoi fare un ciclo unico ?

procedure eta;
begin
for i:=1 to n do
begin
e:=an-v[i];
writeln(v[an]);
end;
end;

NightSilente
22-05-2009, 19:22
ma quando calcoli l'età non dovresti farlo in un ciclo for ? non puoi fare un ciclo unico ?

procedure eta;
begin
for i:=1 to n do
begin
e:=an-v[i];
writeln(v[an]);
end;
end;


Si hai ragione devo farlo in un ciclo for.....volevo farlo in un'altra procedura......cmq mi da sempre 0

Krat0s
24-05-2009, 02:09
procedure visual_eta;
begin
for i:=1 to n do
begin
writeln(v[an]);
end;


Ho dato un'occhiata al codice....se non erro al posto di an ci deve essere n

ElChip
24-05-2009, 06:00
è tutto un po' confuso..:rolleyes:

- l'età viene calcolata solo dell'ultima persona inserita.
- quando visualizzi l'età, cerchi di posizionarti in una posizione ("an" che magari vale 2009) che supera la lunghezza massima del vettore.

Ciampa
24-05-2009, 12:00
è tutto un po' confuso..:rolleyes:

- l'età viene calcolata solo dell'ultima persona inserita.
- quando visualizzi l'età, cerchi di posizionarti in una posizione ("an" che magari vale 2009) che supera la lunghezza massima del vettore.

giusto.. quando ho dato la prima risposta non ci ho pensato molto :)

così forse va meglio ??

procedure eta;
begin
for i:=1 to n do
begin
e:=an-v[i];
writeln(e);
end;
end;


così hai v[i] che contiene l'anno di nascita, an è fisso a 2009, e con il ciclio stampi tutte le età delle n persone