tantocibo (Normal User)
Newbie
Messaggi: 14
Iscritto: 05/04/2012
|
Il programma in Pascal "incriminato" stabilisce quante componenti positive/negative ha il vettore con il maggior numero di componenti positive/negative. i vettori sono 5, e le componenti per ciascuno sono 30, che variano come valore da -50 a 50.
Il problema è che il programma genera in output come valori di 'pos0' e 'neg0' (parametri variabili delle procedure) sempre 0, impedendo il reale scopo del programma. Dal momento che la procedura 'generavettore' funziona correttamente (genera i valori come previsto, in modo casuale), credo che il problema di questo malfunzionamento sia proprio imputabile ai contatori 'pos0' e 'neg0', o, perlomeno, all'intera procedura 'contacomponenti'.
Mi affido agli esperti
Codice sorgente - presumibilmente Delphi |
program vettore_max_positive_negative; uses crt; type vettore=array[1..30] of longint; var i,a,neg1,neg2,neg3,neg4,neg5,pos1,pos2,pos3,pos4,pos5,maxneg,maxpos:longint;v1,v2,v3,v4,v5:vettore; //generazione vettore procedure generavettore(var v0:vettore); begin for i:=1 to 30 do begin a:=random(101); v0[i]:=50-a; end; end; //conteggio componenti negative e positive per ciascun vettore procedure contacomponenti(var v0:vettore;neg0:longint;pos0:longint); begin for i:=1 to 30 do begin if v0[i]<0 then neg0:=neg0+1; //conteggio componenti negative if v0[i]>0 then pos0:=pos0+1; //conteggio componenti positive end; end; //programma begin randomize; textcolor(white); generavettore(v1); generavettore(v2); generavettore(v3); generavettore(v4); generavettore(v5); contacomponenti(v1,neg1,pos1); maxneg:=neg1; maxpos:=pos1; contacomponenti(v2,neg2,pos2); if neg2>maxneg then maxneg:=neg2; if pos2>maxpos then maxpos:=pos2; contacomponenti(v3,neg3,pos3); if neg3>maxneg then maxneg:=neg3; if pos3>maxpos then maxpos:=pos3; contacomponenti(v4,neg4,pos4); if neg4>maxneg then maxneg:=neg4; if pos4>maxpos then maxpos:=pos4; contacomponenti(v5,neg5,pos5); if neg5>maxneg then maxneg:=neg5; if pos5>maxpos then maxpos:=pos5; //controllo per debug -- temporaneo ! -- for i:=1 to 30 do begin writeln(v1[i]); writeln(v2[i]); writeln(v3[i]); writeln(v4[i]); writeln(v5[i]); end; writeln;writeln; writeln('vettore con maggior numero di componenti positive ha ',maxpos,' componenti positive'); writeln('vettore con maggior numero di compoennti negative ha ',maxneg,' componenti negative'); writeln('totale componenti negative per ciascuno dei vettori: ',neg1,' ',neg2,' ',neg3,' ',neg4,' ',neg5); writeln('totale omponenti positive per ciascuno dei vettori: ',pos1,' ',pos2,' ',pos3,' ',pos4,' ',pos5); readkey; end. // Sono i contatori 'neg0' e 'pos0' della procedura 'contacomponenti' che non "funzionano"!! le componenti generate sono corrette!!!!
|
Ultima modifica effettuata da tantocibo il 05/04/2012 alle 19:41 |