gighen991 (Normal User)
Newbie
Messaggi: 20
Iscritto: 27/04/2009
|
ragazzi mi serve urgentemente una mano!! non riesco a fare questo programma con gli array paralleli in pascal!!
ecco il testo
Di alcune città di una regione italiana vengono memorizzate le seguenti informazioni:
-il nome della città;
-la temperatura massima registrata nella giornata;
-la temperatura minima registrata nella giornata;
fornisci in output
-la città più fredda;
-la città più calda;
-la città che ha avuto la maggiore escursione termica.
CHI RIESCE AD AIUTARMI MI FA UN GRANDISSIMO FAVORE!!
|
|
Anonymous (Member)
Guru
Messaggi: 1059
Iscritto: 30/07/2006
|
posta quello fin cui sei arrivato a scrivere...
Ultima modifica effettuata da Anonymous il 27/04/2009 alle 20:50 |
|
gighen991 (Normal User)
Newbie
Messaggi: 20
Iscritto: 27/04/2009
|
Postato originariamente da Anonymous:
posta quello fin cui sei arrivato a scrivere... |
program anno;
var
nomi:array[1..10] of string[20];
tempmax:array[1..10] of integer;
tempmin:array[1..10] of integer;
e:array[1..10] of integer;
procedure acquisirevettore;
var i:integer;
begin
for i:=1 to 10 do;
begin
write('inserirsci il nome della citta:');
readln(nomi);
write('inserisci la temperatura massima:');
readln(tempmax);
write('inserisci la temperatura minima');
readln(tempmin);
end;
end;
procedure maxmin;
var
i:integer;
j:integer;
tmax:integer;
tmin:integer;
begin
tmax:=1;
tmin:=1;
for i:=1 to 10-1 do
for j:=i+1 to 10 do
if tempmax>tempmax[j] then
begin
tmax:=tempmax;
tempmax:=tempmax[j];
tempmax[j]:=tmax;
if tempmin<tempmin[j] then
begin
tmin:=tempmin;
tempmin:=tempmin[j];
tempmin[j]:=tmin;
end;
end;
end;
procedure gestioneescursione;
var
i:integer;
tmax:integer;
tmin:integer;
begin
for i:=1 to 10 do
e:=tmax-tmin;
end;
procedure escursionemaggiore;
var
emax:integer;
i:integer;
begin
pmax:=e[1];
for i:=2 to n do
if e>=emax then
emax:=e;
end;
procedure outputvettore;
var
i:integer;
begin
writeln('tmax:',tempmax);
writeln('tmin:',tempmin);
end;
begin
acquisirevettore;
maxmin;
{outputvettore};
gestioneescursione;
escursionemaggiore;
readln;
end.
questo è il programma però non mi visualizza la temperatura massima e quella minima... e il resto delle procedure non sono riuscito ad eseguirlo... |
|
Anonymous (Member)
Guru
Messaggi: 1059
Iscritto: 30/07/2006
|
allora.. il codice complessivamente era ok...
c'era qualche errore ma cosi dovrebbe andare
Codice sorgente - presumibilmente Delphi |
program anno; uses crt; const n=5; var emax:integer; nomi:array[1..n] of string[20]; tempmax:array[1..n] of integer; tempmin:array[1..n] of integer; e:array[1..n] of integer; tmax:integer; tmin:integer; procedure acquisirevettore; var i:integer; begin for i:=1 to n do begin writeln('inserirsci il nome della citta:'); readln(nomi[i]); writeln('inserisci la temperatura massima:'); readln(tempmax[i]); writeln('inserisci la temperatura minima'); readln(tempmin[i]); end; end; procedure maxmin; var i:integer; j:integer; begin tmax:=tempmax[1]; tmin:=tempmin[1]; for i:=2 to n+1 do for j:=2 to n+1 do begin if tempmax[i]>tempmax[j] then tmax:=tempmax[i]; if tempmin[i]<tempmin[j] then tmin:=tempmin[i]; end; end; procedure gestioneescursione; var i:integer; tmax:integer; tmin:integer; begin for i:=1 to n do e[i]:=tempmax[i]-tempmin[i]; end; procedure escursionemaggiore; var i:integer; begin gestioneescursione; emax:=e[1]; for i:=2 to n do if e[i]>=emax then emax:=e[i]; end; procedure outputvettore; var i:integer; begin writeln('tmax:',tmax); writeln('tmin:',tmin); writeln('emax:',emax); end; begin clrscr; acquisirevettore; maxmin; escursionemaggiore; outputvettore; readln; end.
|
gli errori principali erano che dentro ai cicli for tu facevi associare a delle normali variabili semplici gli array.. del tipo cosi:
se m è una variabile di tipo intero e vettore è un array che contiene elementi interi tu facevi:
Codice sorgente - presumibilmente Pascal |
for i=1 to 10 do vettore=m;
|
e ciò non può essere, devi fare cosi
Codice sorgente - presumibilmente Pascal |
for i=1 to 10 do vettore[i]=m;
|
perché in questo modo fai associare agli ELEMENTI del vettore che sono elementi semplici di tipo intero, un altro elemento semplice di tipo intero...
cmq poi ho eliminato e corretto sostanzialmente la procedura maxmin e ho messo come variabili globali alcune variabili che tu avevi messo locali ma che servivano globali
p.s.
ah e cosa fondamentale è che dopo il "do" del "for to do" non ce lo devi mettere il punto e virgola, perché sennò il ciclo te lo fa una volta sola invece che 10 volte...
cmq sia questo prog non fa esattamente quello che chiede la domanda perché il testo vuole sapere il nome delle città e non i dati...
quindi ora se sai come fare bene... altrimenti chiedi pure che cercherò di aiutarti, ma si tratta di aggiungere solo una piccola cosa dentro ai cicli for delle proceudre minmax e escursionetermica, e poi un altro writeln dentro alla procedura di output Ultima modifica effettuata da Anonymous il 27/04/2009 alle 21:59 |
|
gigisoft (Member)
Guru
Messaggi: 696
Iscritto: 11/10/2008
|
Postato originariamente da Anonymous:
[...]
cmq sia questo prog non fa esattamente quello che chiede la domanda perché il testo vuole sapere il nome delle città e non i dati...
quindi ora se sai come fare bene... altrimenti chiedi pure che cercherò di aiutarti, ma si tratta di aggiungere solo una piccola cosa dentro ai cicli for delle proceudre minmax e escursionetermica, e poi un altro writeln dentro alla procedura di output |
Beh... il problema si risolverebbe piu' semplicemente se venisse usato un'array di record anziche' piu' array separati. |
|
Anonymous (Member)
Guru
Messaggi: 1059
Iscritto: 30/07/2006
|
Postato originariamente da gigisoft:
Beh... il problema si risolverebbe piu' semplicemente se venisse usato un'array di record anziche' piu' array separati. |
si ma lui aveva già impostato il programma con più array... e cmq proprio nel testo chiedeva di "array paralleli" Ultima modifica effettuata da Anonymous il 28/04/2009 alle 15:14 |
|
gighen991 (Normal User)
Newbie
Messaggi: 20
Iscritto: 27/04/2009
|
Postato originariamente da Anonymous:
allora.. il codice complessivamente era ok...
c'era qualche errore ma cosi dovrebbe andare
Codice sorgente - presumibilmente Delphi |
program anno; uses crt; const n=5; var emax:integer; nomi:array[1..n] of string[20]; tempmax:array[1..n] of integer; tempmin:array[1..n] of integer; e:array[1..n] of integer; tmax:integer; tmin:integer; procedure acquisirevettore; var i:integer; begin for i:=1 to n do begin writeln('inserirsci il nome della citta:'); readln(nomi[i]); writeln('inserisci la temperatura massima:'); readln(tempmax[i]); writeln('inserisci la temperatura minima'); readln(tempmin[i]); end; end; procedure maxmin; var i:integer; j:integer; begin tmax:=tempmax[1]; tmin:=tempmin[1]; for i:=2 to n+1 do for j:=2 to n+1 do begin if tempmax[i]>tempmax[j] then tmax:=tempmax[i]; if tempmin[i]<tempmin[j] then tmin:=tempmin[i]; end; end; procedure gestioneescursione; var i:integer; tmax:integer; tmin:integer; begin for i:=1 to n do e[i]:=tempmax[i]-tempmin[i]; end; procedure escursionemaggiore; var i:integer; begin gestioneescursione; emax:=e[1]; for i:=2 to n do if e[i]>=emax then emax:=e[i]; end; procedure outputvettore; var i:integer; begin writeln('tmax:',tmax); writeln('tmin:',tmin); writeln('emax:',emax); end; begin clrscr; acquisirevettore; maxmin; escursionemaggiore; outputvettore; readln; end.
|
gli errori principali erano che dentro ai cicli for tu facevi associare a delle normali variabili semplici gli array.. del tipo cosi:
se m è una variabile di tipo intero e vettore è un array che contiene elementi interi tu facevi:
Codice sorgente - presumibilmente Pascal |
for i=1 to 10 do vettore=m;
|
e ciò non può essere, devi fare cosi
Codice sorgente - presumibilmente Pascal |
for i=1 to 10 do vettore[i]=m;
|
perché in questo modo fai associare agli ELEMENTI del vettore che sono elementi semplici di tipo intero, un altro elemento semplice di tipo intero...
cmq poi ho eliminato e corretto sostanzialmente la procedura maxmin e ho messo come variabili globali alcune variabili che tu avevi messo locali ma che servivano globali
p.s.
ah e cosa fondamentale è che dopo il "do" del "for to do" non ce lo devi mettere il punto e virgola, perché sennò il ciclo te lo fa una volta sola invece che 10 volte...
cmq sia questo prog non fa esattamente quello che chiede la domanda perché il testo vuole sapere il nome delle città e non i dati...
quindi ora se sai come fare bene... altrimenti chiedi pure che cercherò di aiutarti, ma si tratta di aggiungere solo una piccola cosa dentro ai cicli for delle proceudre minmax e escursionetermica, e poi un altro writeln dentro alla procedura di output |
grazie mille per l'aiuto!!!... Io me la cavo meglio con il c++ e sinceramente il pascal lo uso solo a scuola !! cmq x il nome della città magari mi ingenio |
|