Oppure

Loading
27/04/09 18:20
gighen991
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!! :hail: :hail:
aaa
27/04/09 18:50
Anonymous
posta quello fin cui sei arrivato a scrivere...
Ultima modifica effettuata da Anonymous 27/04/09 18:50
aaa
27/04/09 18:59
gighen991
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[i]);
write('inserisci la temperatura massima:');
readln(tempmax[i]);
write('inserisci la temperatura minima');
readln(tempmin[i]);
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[i]>tempmax[j] then
begin
tmax:=tempmax[i];
tempmax[i]:=tempmax[j];
tempmax[j]:=tmax;
if tempmin[i]<tempmin[j] then
begin
tmin:=tempmin[i];
tempmin[i]:=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[i]:=tmax-tmin;
end;

procedure escursionemaggiore;
var
emax:integer;
i:integer;
begin
pmax:=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:',tempmax[i]);
writeln('tmin:',tempmin[i]);
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...
aaa
27/04/09 19:45
Anonymous
allora.. il codice complessivamente era ok...

c'era qualche errore ma cosi dovrebbe andare

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:
for i=1 to 10 do 
vettore=m;


e ciò non può essere, devi fare cosi

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 27/04/09 19:59
aaa
28/04/09 8:45
gigisoft
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.
aaa
28/04/09 13:13
Anonymous
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 28/04/09 13:14
aaa
28/04/09 15:06
gighen991
Postato originariamente da Anonymous:

allora.. il codice complessivamente era ok...

c'era qualche errore ma cosi dovrebbe andare

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:
for i=1 to 10 do 
vettore=m;


e ciò non può essere, devi fare cosi

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 ;)
aaa