| V I S U A L I Z Z A D I S C U S S I O N E |
| tremenda |
Inserito il - 10/01/2005 : 17:39:01 Ki mi trova l'errore in questo pezzo di codice???E' l'algoritmo x la fusione! Non riesco a capire xkè nn mi funziona!
procedure copy(var b:vet; var c:vet2; j,n:integer; var k:integer); var i:integer; begin for i:=j to n do begin c[k]:=b[i]; k:=k+1; end; end; procedure shortmerge(var a,b:vet; var c:vet2; m:integer; var j,k:integer); var i:integer; begin while i<=m do begin if a[i]<=b[j] then begin c[k]:=a[i]; i:=i+1; end else begin c[k]:=b[j]; j:=j+1; end; k:=k+1; end; end; procedure mergecopy(var a,b:vet; var c:vet2; m,n:integer); var i,j,k:integer; begin i:=1; j:=1; k:=1; if a[m]<=b[i] then begin copy(a,c,i,m,k); copy(b,c,j,n,k); end else begin shortmerge(a,b,c,m,j,k); copy(b,c,j,n,k); end; end; procedure merge(var a,b:vet; var c:vet2; m,n:integer); begin if a[m]<=b[n] then mergecopy(a,b,c,m,n) else mergecopy(b,a,c,n,m); end;
Grazie a ki mi aiuterà prima di mercoledì! |
| 5 U L T I M E R I S P O S T E (in alto le più recenti) |
| tremenda |
Inserito il - 11/01/2005 : 09:41:51 Il mio algoritmo è indentato solo ke copiandolo si sono annullati gli spazi! L'errore è in esecuzione cioè quando fonde nel nuovo vettore copia gli elementi del primo e dopo mette 0 a tutti quelli del secondo! |
| paioner |
Inserito il - 10/01/2005 : 23:32:38 Citazione: Messaggio inserito da fabbattista
Ma ke errore ti da?
Una cosa ke sembra scorretta è che manca la inizializzazione della variabile i nella procedura shortmerge......
Potrebbe essere un motivo, manca anche nella procedure copy. . .
Non so che ambiente di sviluppo utilizzi, ma sono molto utili tool di debug per scovare errori di funzionamento |
| paioner |
Inserito il - 10/01/2005 : 23:28:50 Ti consiglio di commentare sampre il codice . . . Io ho fatto Programmazione da tempo quindi non ricordo perfettamente l'algoritmo.
Almeno scrivi cosa dovrebbero fare le diverse procedure e cosa sono i vari parametri in input . . . in modo che anche altri possano aiutarti, e non solo quelli che sanno a cosa ti riferisci.
Suppongo che la funzione principale sia procedure merge(var a,b:vet; var c:vet2; m,n:integer);
Inoltre che tipo di errore hai? E' in fase di compilazione? Esecuzione? Oppure il programma fa una cosa sbagliata?
Non è che il programma vuole in input due vettori ordinati e tu dai un input sbagliato? E' la prima cosa che mi è venuta in mente e che posso dirti con i "dati" a disposizione.  
Inoltre, postando ankio una porzione di codice identata con spazi ho notato che gli spazi iniziali sono automaticamente ignorati. per migliorare la leggibilità, riporto di seguito lo stesso codice identato con " - " in modo che anche gli altri non si scoraggino e cerchino di darti una soluzione (sempre che tu non l'abbia già trovata) Se darai ulteriori informazioni sarò lieto di aiutarti.
procedure copy(var b:vet; var c:vet2; j,n:integer; var k:integer); var i:integer; begin -- for i:=j to n do -- -- begin -- -- c[k]:=b[i]; -- -- k:=k+1; -- -- end; end;
procedure shortmerge(var a,b:vet; var c:vet2; m:integer; var j,k:integer); var i:integer; begin -- while i<=m do -- -- begin -- -- if a[i]<=b[j] then -- -- -- begin -- -- -- c[k]:=a[i]; -- -- -- i:=i+1; -- -- -- end -- -- else -- -- -- begin -- -- -- c[k]:=b[j]; -- -- -- j:=j+1; -- -- -- end; -- -- k:=k+1; -- -- end; end;
procedure mergecopy(var a,b:vet; var c:vet2; m,n:integer); var i,j,k:integer; begin -- i:=1; -- j:=1; -- k:=1; -- if a[m]<=b[i] then -- -- begin -- -- copy(a,c,i,m,k); -- -- copy(b,c,j,n,k); -- -- end -- else -- -- begin -- -- shortmerge(a,b,c,m,j,k); -- -- copy(b,c,j,n,k); -- -- end; end;
procedure merge(var a,b:vet; var c:vet2; m,n:integer); begin -- if a[m]<=b[n] then mergecopy(a,b,c,m,n) -- else mergecopy(b,a,c,n,m); end; |
| Cathàll |
Inserito il - 10/01/2005 : 19:57:01 Citazione: Messaggio inserito da tremenda Grazie a ki mi aiuterà prima di mercoledì!
Sarà che sotto-ASD ho proprio una repulsione per tutto ciò che è sotto forma di Codice, ma francamente senza indentazione si capisce proprio poco. |
| fabbattista |
Inserito il - 10/01/2005 : 18:29:21 Ma ke errore ti da?
Una cosa ke sembra scorretta è che manca la inizializzazione della variabile i nella procedura shortmerge...... |
|
|