Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - aiuto!!
Forum - Pascal - aiuto!!

Avatar
gighen991 (Normal User)
Newbie


Messaggi: 20
Iscritto: 27/04/2009

Segnala al moderatore
Postato alle 20:20
Lunedì, 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!! :hail: :hail:

PM Quote
Avatar
Anonymous (Member)
Guru


Messaggi: 1059
Iscritto: 30/07/2006

Segnala al moderatore
Postato alle 20:50
Lunedì, 27/04/2009
posta quello fin cui sei arrivato a scrivere...

Ultima modifica effettuata da Anonymous il 27/04/2009 alle 20:50
PM Quote
Avatar
gighen991 (Normal User)
Newbie


Messaggi: 20
Iscritto: 27/04/2009

Segnala al moderatore
Postato alle 20:59
Lunedì, 27/04/2009
Testo quotato

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...

PM Quote
Avatar
Anonymous (Member)
Guru


Messaggi: 1059
Iscritto: 30/07/2006

Segnala al moderatore
Postato alle 21:45
Lunedì, 27/04/2009
allora.. il codice complessivamente era ok...

c'era qualche errore ma cosi dovrebbe andare

Codice sorgente - presumibilmente Delphi

  1. program anno;
  2. uses crt;
  3. const n=5;
  4. var
  5. emax:integer;
  6. nomi:array[1..n] of string[20];
  7. tempmax:array[1..n] of integer;
  8. tempmin:array[1..n] of integer;
  9. e:array[1..n] of integer;
  10. tmax:integer;
  11. tmin:integer;
  12.  
  13. procedure acquisirevettore;
  14. var i:integer;
  15. begin
  16.  for i:=1 to n do
  17.   begin
  18.    writeln('inserirsci il nome della citta:');
  19.    readln(nomi[i]);
  20.  
  21.    writeln('inserisci la temperatura massima:');
  22.    readln(tempmax[i]);
  23.  
  24.    writeln('inserisci la temperatura minima');
  25.    readln(tempmin[i]);
  26.   end;
  27.  
  28. end;
  29.  
  30. procedure maxmin;
  31. var
  32. i:integer;
  33. j:integer;
  34.  
  35. begin
  36.  tmax:=tempmax[1];
  37.  tmin:=tempmin[1];
  38.  for i:=2 to n+1 do
  39.   for j:=2 to n+1 do
  40.    begin
  41.     if tempmax[i]>tempmax[j] then
  42.       tmax:=tempmax[i];
  43.      if tempmin[i]<tempmin[j] then
  44.        tmin:=tempmin[i];
  45.     end;
  46. end;
  47.  
  48.  
  49. procedure gestioneescursione;
  50. var
  51.  i:integer;
  52.  tmax:integer;
  53.  tmin:integer;
  54. begin
  55.  for i:=1 to n do
  56.   e[i]:=tempmax[i]-tempmin[i];
  57. end;
  58.  
  59. procedure escursionemaggiore;
  60.  var
  61.  i:integer;
  62.  begin
  63.   gestioneescursione;
  64.   emax:=e[1];
  65.   for i:=2 to n do
  66.    if e[i]>=emax then
  67.     emax:=e[i];
  68.  end;
  69.  
  70.    procedure outputvettore;
  71.    var
  72.    i:integer;
  73.    begin
  74.    writeln('tmax:',tmax);
  75.    writeln('tmin:',tmin);
  76.    writeln('emax:',emax);
  77.    end;
  78.  
  79.  
  80. begin
  81.  clrscr;
  82.  acquisirevettore;
  83.  maxmin;
  84.  escursionemaggiore;
  85.  outputvettore;
  86.  readln;
  87. 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

  1. for i=1 to 10 do
  2. vettore=m;



e ciò non può essere,  devi fare cosi
Codice sorgente - presumibilmente Pascal

  1. for i=1 to 10 do
  2. 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
PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 10:45
Martedì, 28/04/2009
Testo quotato

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.

PM Quote
Avatar
Anonymous (Member)
Guru


Messaggi: 1059
Iscritto: 30/07/2006

Segnala al moderatore
Postato alle 15:13
Martedì, 28/04/2009
Testo quotato

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
PM Quote
Avatar
gighen991 (Normal User)
Newbie


Messaggi: 20
Iscritto: 27/04/2009

Segnala al moderatore
Postato alle 17:06
Martedì, 28/04/2009
Testo quotato

Postato originariamente da Anonymous:

allora.. il codice complessivamente era ok...

c'era qualche errore ma cosi dovrebbe andare

Codice sorgente - presumibilmente Delphi

  1. program anno;
  2. uses crt;
  3. const n=5;
  4. var
  5. emax:integer;
  6. nomi:array[1..n] of string[20];
  7. tempmax:array[1..n] of integer;
  8. tempmin:array[1..n] of integer;
  9. e:array[1..n] of integer;
  10. tmax:integer;
  11. tmin:integer;
  12.  
  13. procedure acquisirevettore;
  14. var i:integer;
  15. begin
  16.  for i:=1 to n do
  17.   begin
  18.    writeln('inserirsci il nome della citta:');
  19.    readln(nomi[i]);
  20.  
  21.    writeln('inserisci la temperatura massima:');
  22.    readln(tempmax[i]);
  23.  
  24.    writeln('inserisci la temperatura minima');
  25.    readln(tempmin[i]);
  26.   end;
  27.  
  28. end;
  29.  
  30. procedure maxmin;
  31. var
  32. i:integer;
  33. j:integer;
  34.  
  35. begin
  36.  tmax:=tempmax[1];
  37.  tmin:=tempmin[1];
  38.  for i:=2 to n+1 do
  39.   for j:=2 to n+1 do
  40.    begin
  41.     if tempmax[i]>tempmax[j] then
  42.       tmax:=tempmax[i];
  43.      if tempmin[i]<tempmin[j] then
  44.        tmin:=tempmin[i];
  45.     end;
  46. end;
  47.  
  48.  
  49. procedure gestioneescursione;
  50. var
  51.  i:integer;
  52.  tmax:integer;
  53.  tmin:integer;
  54. begin
  55.  for i:=1 to n do
  56.   e[i]:=tempmax[i]-tempmin[i];
  57. end;
  58.  
  59. procedure escursionemaggiore;
  60.  var
  61.  i:integer;
  62.  begin
  63.   gestioneescursione;
  64.   emax:=e[1];
  65.   for i:=2 to n do
  66.    if e[i]>=emax then
  67.     emax:=e[i];
  68.  end;
  69.  
  70.    procedure outputvettore;
  71.    var
  72.    i:integer;
  73.    begin
  74.    writeln('tmax:',tmax);
  75.    writeln('tmin:',tmin);
  76.    writeln('emax:',emax);
  77.    end;
  78.  
  79.  
  80. begin
  81.  clrscr;
  82.  acquisirevettore;
  83.  maxmin;
  84.  escursionemaggiore;
  85.  outputvettore;
  86.  readln;
  87. 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

  1. for i=1 to 10 do
  2. vettore=m;



e ciò non può essere,  devi fare cosi
Codice sorgente - presumibilmente Pascal

  1. for i=1 to 10 do
  2. 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 ;)

PM Quote