|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 406
|
[C] Programma che scrive un vettore da due vettori inseriti
Mi potreste aiutare a capire perchè questa funzione non lavora come vorrei?
Codice:
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);
}
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. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Feb 2006
Città: Provincia di BA!
Messaggi: 439
|
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
__________________
~ Notebook: Dell Studio 1537 - Intel Core 2 Duo T6400 @ 2,00 GHz ~ ~ Cel: Nokia 5230 ~ Console: Nintendo Wii "La menopausa è quando i cacciatori ubriachi sparano alla cicogna che porta i bebè..."
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Aug 2005
Messaggi: 168
|
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. Ultima modifica di Kenger : 08-11-2008 alle 16:24. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2005
Messaggi: 406
|
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"):
Codice:
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");
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:47.


















