Esercizio in C

di Anonimizzato24228 il
6 risposte
Ciao a tutti, sto imparando a programmare. Come faccio a scrivere un programmino che legga alcune stringhe di caratteri alfabetici (sono solo le vocali) di lunghezza e numero indefinito, per poi fare la conta di ciascuna vocale in ogni stringa?
Grazie

6 Risposte

  • Hai delle conoscenze di base o no? Cosa hai studiato? Hai mai scritto un piccolo programma?
  • Si,ho le basi e sto imparando a usare vettori, puntatori, stringhe..il livello è questo.
  • Il testo preciso dell'esercizio qual è? Comunque non ti servono le stringhe in linea teorica, ti basta un while con la getchar() ed un if per controllare se il carattere inserito sia una vocale o meno ed in tal caso incrementare la variabile che usi per contarle
  • Info31 ha scritto:


    Si,ho le basi e sto imparando a usare vettori, puntatori, stringhe..il livello è questo.
    Quindi comincia a buttare giù del codice ...
  • "Il programma deve acquisire da standard imput alcune righe distinte di sequenze vocaliche, di numero e lunghezza non definiti, eseguire la conta delle occorrenze di ciascuna vocale per ogni riga e infine stampare un risultato del tipo "Vocale : n riga, n occorrenze" (ovviamente per tutte le vocali presenti)".
    Io per ora ho pensato di fare così: 1. creo una funzione del tipo
    int conta ( char v[], char x){
    int numero=0;
    int i;
    for(i=0; v != '\0'; i++){
    if (v == x){
    numero++;
    }
    }
    return numero;
    }
    ma non so come creare un vettore di lunghezza non definita;
    poi nel main dovrei richiamare questa funzione per ogni vocale, all'interno di un ciclo che scorra tutte le righe (vettori) , e che stampi il risultato corrispondente. Il problema principale rimane il fatto che non so come creare vettori di lunghezza indefinita, e come creare un indice appropriato per scorrere i "vettori riga".
  • Io non credo sia necessario gestire l'input con un vettore, potresti usare semplicemente getchar() in un modo simile a questo, a patto di far terminare l'input con l'EOF che è tipicamente ctrl+D o ctrl+Z:
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    
    
    int main(void)
    {
        int ch;
        int count_a = 0;
    
        while((ch = getchar()) != EOF) {
            if(tolower(ch) == 'a') {    /*tolower serve affinché il programma sia case-insensitive*/
                ++count_a;
            }
        }
    
        printf("La lettera 'a' compare %d volte\n", count_a);
    
        return EXIT_SUCCESS;
    }
    
Devi accedere o registrarti per scrivere nel forum
6 risposte