Programma che conta vocali!!

di il
10 risposte

Programma che conta vocali!!

Salve a tutti da poco mi sono avvicinato all'ambiente di programmazione e sto incominciando con il "C", vi chiedo un aiuto dovrei risolvere un quesito, ovvero di scrivere un programma che data una sequenza di caratteri visulizzi quanti corrispondono a vocali, io ho provato a scrivere il codice seguente ma mi restituisce o solo 1 o solo 0, per favore mi potete aiutare?
Grazie mille..


#include <stdio.h>
#include <stdlib.h>

#define N 100
#define V 5

int main(void)
{
    char vocali [V] = {'a' , 'e', 'i', 'o', 'u'};
    char frase[N];
    int cntvocali = 0, i;

    printf("Programma per il conteggio di vocali\nInserisci una frase (Max 100 c):\n");
    scanf("%s", frase);

    for(i = 0; i < N; i++){
        if(frase[i] == vocali[5])
            cntvocali++;
    }

    printf("Ci sono %d vocali nella stringa \"%s\"", cntvocali, frase);
    return 0;
}
non riesco a capire dove sbaglio scusate l'ignoranza....

10 Risposte

  • Re: Programma che conta vocali!!

    Scanf termina l'acquisizione appena trova uno spazio. devi usare gets.
    devi scandire tutto l'array dei vocali non solo la posizione 5 che tra altro non è una posizione valida.
    
    for(i = 0; i < N; i++)
          for(j = 0; j < V; j++)
               if(frase[i] == vocali[j]
               {
                  cntvocali++;
                  continue;
               }
    
  • Re: Programma che conta vocali!!

    Anche io sono alle prime armi non ti posso essere molto d'aiuto, però mi sono accorto che se provi a scrivere ad esempio aeiouaeiouaeiou il programma dice che ci sono 3 vocali, perchè hai scritto tre volte aeiou. Quindi è probabile che conti come una vocale tutta la sequenza aeiou, anche se alcune volte restituisce 1 nonostante non scriva aeiou.
  • Re: Programma che conta vocali!!

    Il programma non funziona anche se sembra che funzioni. Non so che compilatore usate x scrivere i vostri programmi ma in un array di 5 elementi non esiste la posizione numero 5 in quanto l'enumerazioe inizia da 0. Con Visual Studio il debugger si incavola e dice "array out of bounds" cioè lettura oltre l'indice dell'array. Quindi vocali[5] NON è una posizione valida.
  • Re: Programma che conta vocali!!

    Ragazzi ho risolto grazie mille per la dritta.. adesso posto il codice completo...
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #define N 100
    #define V 5
    
    int main(void)
    {
        char vocali[V] = {'a' , 'e', 'i', 'o', 'u'};
        char frase[N];
        int cntvocali = 0, i, j;
    
        printf("Programma per il conteggio di vocali\nInserisci una frase (Max 100 c):\n");
        scanf("%s", frase);
    
        for(i = 0; i < N; i++){
          for(j = 0; j < V; j++)
               if(frase[i] == vocali[j]){
                  cntvocali++;
                  continue;
               }
        }
        printf("Ci sono %d vocali nella stringa \"%s\"", cntvocali, frase);
        return 0;
    }
    
    Cosi va alla grande... grazie a tutti..
  • Re: Programma che conta vocali!!

    Prova a mettere una frase separata da spazi e vediamo se va alla grande.
  • Re: Programma che conta vocali!!

    Si infatti non va..
  • Re: Programma che conta vocali!!

    Ti ho detto di usare gets a posto di scanf.
  • Re: Programma che conta vocali!!

    Ops... skynet
    gets non è deprecata ma altamente sconsigliata. Bisogna usare fgets.

    Saluti,
    Max
  • Re: Programma che conta vocali!!

    Se è per quello non è neanche consigliato studiare il C quando c'è C++ in giro ma in programmini del genere non credo che a qualcuno interessa il buffer overflow.
  • Re: Programma che conta vocali!!

    Grazie.. funziona..
Devi accedere o registrarti per scrivere nel forum
10 risposte