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