Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Primo Anno
 Programmazione
 Caccia all'errore...

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista Inserisci Faccine
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Smilies
Approvazione [^] Arrabbiato [:(!] Bacio [:X] Bevuta [:273]
Caldo [8D] Compiaciuto [8)]    
compleanno [:269]
Davvero Felice [:D] Diavoletto [}:)] Disapprovazione [V] Domanda [?]
Felice [:)] Fumata [:29] Goloso [:P] Imbarazzato [:I]
Infelice [:(] Morte improvvisa da [:62]
Morto [xx(] Occhio Nero [B)] Occhiolino [;)] Palla 8 [8]
pc [:205]    
Riproduzione [:76]
Scioccato [:O]      

   Allega file
  Clicca qui per inserire la tua firma nel messaggio.
Clicca qui per sottoscrivere questa Discussione.
    

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

Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,08 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000