Ciao ragazzi, ho due problemi, probabilmente banali. Sto facendo un esercizio del mio testo universitario che implica la creazione di due vettori di caratteri da parte dell'utente ed elabora un terzo vettore (w nel mio codice) i cui elementi sono quelli dei due array presi alternatamente.
Il primo riguarda credo il buffer di lettura; se non metto fflush(stdin); dopo lo scanf quando raccolgo i caratteri immessi dall'utente, il programma richiede in input solo il carattere dell'elemento [1] dell'array, saltando il [0] e il [2] nel caso abbia messo come lunghezza dell'array 3. Tuttavia so che fflush non è un metodo molto buono.
L'altro problema riguarda il fatto che se stampo i caratteri dell'array 2 mi da qualcosa di strano, cioé restituisce sempre come caratteri: [0] vuoto, [1] B, [2] y con due puntini sopra. Non ho provato per array di dimensioni >3 ma il concetto è quello.
Terzo problema: l'array che dovrebbe avere gli elementi dei due array inseriti dall'utente, con gli elementi fatti così:
se n=3
v1[0]=a, v1[1] = b, v1[2] = c
v2[0]=d, v2[1] = e, v1[2] = f
w[0]=a, w[1] =d, w[2] = b, w[3] = e, w[4] = c, w[5] = f
quando lo stampo mi restituisce perlopiù caratteri vuoti, sennò caratteri stranissimi.
Immagino ci siano dei problemi di fondo che la mia pochissima conoscenza del C hanno fatto emergere con questo esercizio. Per inciso, sono un ultra neofita del C, ho iniziato a studiarlo da una settimana e mezza
Grazie in anticipo!
P.S.: Uso Code::Blocks
Allego qui il mio codice:
codice:
// ESERCIZIO 5 CAPITOLO 7 - ARRAY DI CARATTERI ALTERNATI
#include <stdio.h>
#include <math.h>
#define MAX_NUM 100
main() {
int n, i, j;
char v1[MAX_NUM], v2[MAX_NUM], w[MAX_NUM];
printf("ESERCIZIO 5 CAPITOLO 7");
printf("\n\nLunghezza vettori: ");
scanf("%d", &n);
fflush(stdin);
printf("\nVettore 1\n");
for(i=0; i<n; i++){
printf("%do elemento: ", i+1);
scanf("%c", &v1[i]);
fflush(stdin);
}
printf("\n\nVettore 2\n");
for(i=0; i<n; i++){
printf("%do elemento: ", i+1);
scanf("%c", &v2[i]);
fflush(stdin);
}
// Elaborazione e stampa vettore w
printf("\n\nVettore w\n");
for(i=0; i<(n*2); i++){
w[j] = v1[i];
w[j+1] = v2[i];
j++;
j++;
}
for(i=0; i<(n*2); i++){
printf("\t%c", w[i]);
}
// Fine programma
printf("\n\n\n----------------------------------------------------");
return 0;
}