Visualizzazione dei risultati da 1 a 8 su 8

Visualizzazione discussione

  1. #1

    [C] Inserire ricorsivamente caratteri in un array

    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;
    }
    Ultima modifica di MItaly; 26-10-2014 a 16:15 Motivo: Aggiunti tag CODE
    METAL IS MY WAY FOREVER

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.