PDA

View Full Version : [C] Programma che scrive un vettore da due vettori inseriti


Composition86
07-11-2008, 23:05
Mi potreste aiutare a capire perchč questa funzione non lavora come vorrei?
void terzoVettore (int *a, int *b, int *c)
{
int i=0;

printf ("\nEcco il vettore C, formato dagli elementi dei vettori A e B alternati:\n");

while (a[i]!= '\0' && b[i]!= '\0'){
c[2*i] = a[i];
c[2*i+1] = b[i];
i++;
}

printf("%s\n", c);
}
Dovrebbe prendere gli elementi di due vettori di numeri a e b precedentemente inseriti e scriverli in un terzo vettore c in questo modo:
Se a=876 e b=543 -> c=857463.

Pensavo che la presenza di quei 2*i alterasse il valore del contatore, ma provando delle alternative non ho ottenuto nulla.

anyanka
08-11-2008, 13:59
Forse dovresti usare almeno 2 indici per i vettori altrimenti sovrapponi troppe cose...
dovrebbero andar bene i per i vettori a e b che vanno di pari passo e un altro per c che va a scalare e cambia pių volte durante l'iterazione, qualcosa tipo:

j=0, i = 0; fuori dal while
e poi {

c[j] = a[i] ;
j++
c[j] = b[i] ;
i++;
j++;
}

inoltre 2*i all'interno delle parentesi quadre ti fa riferimento all'elemento con indice del valore calcolato ma non aggiorna il valore di i

Kenger
08-11-2008, 15:22
Il tuo algoritmo č concettualmente giusto, solo che fai confusione tra vettori di interi e vettori di char. Infatti cerchi di stampare come una stringa un vettore di interi. Se sostituisci quel printf con un ciclo che stampa ogni singolo elemento il programma va.

Ti consiglio di decidere che tipo di vettori vuoi usare e uniformare tutta la funzione.

Composition86
08-11-2008, 17:12
Si infatti stavo facendo un po' di confusione con il tipo dei vettori (il '/0' si riferisce ai vettori di tipo char, non int), ho rimediato cosė (utilizzando un unico indice, anche se č meno "elastica"):
void terzoVettore (int *a, int *b, int *c)
{
int i=1;

printf ("\nEcco il vettore C, formato dagli elementi dei vettori A e B alternati:\n");

while (a[i]!= 999 || b[i] != 999){
c[2*i] = a[i];
printf("%d ", c[2*i]);
c[2*i+1] = b[i];
printf("%d ", c[2*i+1]);
i++;
}

printf("\n\n");
}

Grazie a tutti!