PDA

View Full Version : [C] Copiare array in un altro


lorenzd
05-05-2010, 16:55
Salve a tutti, complimenti per il forum...è colpa vostra se ora sto cercando di capire il c...:)
Comunque, sto scrivendo una cosetta, che per chi la sa fare presumo sia insignificante, ma che a me sta costando ore ed ore di assurda fatica...sel punto evidenziato di rosso vorrei che gli elementi dell'array b[] venissero copiati in un altro array (copia[]) uno ad uno...il prob è che quando poi stampo, mi viene sempre 0...ora vi posto il codice, non è importante che vi spieghi cosa fa tutto il coso quindi ho tagliato un pezzo di prog. (quello iniziale)...
scanf("%d", &riga);// Leggo indice di partenza

printf("%d\n", riga);
b[0] = riga; //il primo elemento dell'array e del ciclo è quello che gli ho passato io
printf("b[0] = %d\n", riga);// il primo elemento passato da me viene stampato
for (y = 1; y < max; y++){
for (colonna=0; colonna < max; colonna++) {
//printf ("colonna = %d\n", colonna);
//printf ("a[%d][%d]\n", riga,colonna);
if (riga != colonna){
if (prox_riga < 0 && primoavvio == 0){
min = a[riga][colonna];
prox_riga = colonna;
primoavvio++;

//riga = prox_riga;
//printf ("Primo avvio: prox_riga = %d e min = %d\n", prox_riga, min);
}
else if (prox_riga < 0 && primoavvio == 1){
if (confronto(b,y,colonna) == 0){
min = a[riga][colonna];
prox_riga = colonna;

// printf ("prox_riga negativo: prox_riga = %d e min = %d\n", prox_riga, min);
}

}

else if (a[riga][colonna] < min){
if (confronto(b,y,colonna) == 0){
min = a[riga][colonna];
prox_riga = colonna;

}


//riga = prox_riga;
//printf ("prox_riga = %d e min = %d\n", prox_riga, min);
}

}
}
//printf ("Il minimo e' %d e la colonna e' %d\n", min, prox_riga++);
b[y] = prox_riga;
riga = prox_riga;
printf ("b[%d] = %d\n", y, b[y]);
prox_riga = -1;


}
for ( y=1; y < max; y++ ){

//printf("\nVettore dei valori : %d",a[b[y-1]][b[y]]);

costoatt = costoatt+a[b[y-1]][b[y]];
}
printf("\nIl costo attuale e' %d", costoatt);
if (costoatt < costomin)
{
for (k=0;k<max;k++)
{
b[k] = copia [k];
printf ("%d e %d", k , copia[k]);}
}
return 0;
}

Vi ringrazio tantissimo, vi prego di spiegarmi passo passo: sono solo due giorni che programmo :P

Darecon
05-05-2010, 18:27
a copia assegni i valori di b se non erro, quindi e'

for (k=0;k<max;k++)
{
copia[k]=b[k];
printf ("%d e %d", k , copia[k]);
}

mi sa che le hai invertite.. :D

bobosg
06-05-2010, 08:57
for (k=0;k<max;k++)
{
b[k] = copia [k];
printf ("%d e %d", k , copia[k]);}
}


l'errore è questo
b[k] = copia [k];
la seguente riga di codice va letta in questo modo:
copio l'elemento di indice k dell'array copia nell'elemento di indice k dell'array b

ti sarà chiaro ora che non può essere corretto visto che tu vuoi fare esattamente il processo inverso e quindi
copia[k] = b[k];

lorenzd
06-05-2010, 09:34
Ammazza che tonno...grazie mille ragazzi!!!mi stavo arrovellando il cervello...:mc:

bobosg
06-05-2010, 09:58
tranquillo,programmi solo da due giorni, ritieniti soddisfatto.

i veri arrovellamenti :muro: :muro: :muro: li vedrai e come ma più avanti se avrai la fortuna/sfortuna di continuare nel C.... poi mi farai sapere :D