Contare le vocali

di il
14 risposte

Contare le vocali

È un programmino che conta quante vocali ci sono in una stringa,il problema è che il programmino mi conta solo quanti tipi di vocali ci sono e non quante,ad esempio,se scrivo "che bello" il programma me ne conta 2 e non 3,dove ho sbagliato?è questo:
int leggi(char b[]){
int contatore = 0;
int vocali[5] = {'a','e','i','o','u'};
for(int n = 0; n<250; n++)
for(int i= 0;i<5;i++){
if(b[n] == vocali [i])
contatore++;}
return contatore;
}

14 Risposte

  • Re: Contare le vocali

    Non vedo errori io quà. strano ma vero . Le vocali per correttezza non potevi definirli come un array di char?
  • Re: Contare le vocali

    È solo che come ti ho detto ho quel problema lì,anche se metto char è la stessa cosa,ti metto il programma completo:
    #include <iostream>
      using namespace std;
      void leggi_nome_file(char a[]){
      cin>>a;
      }
    int leggi(char b[]){
    int contatore = 0;
    char vocali[5] = {'a','e','i','o','u'};
    for(int n = 0; n<250; n++)
    for(int i= 0;i<5;i++){
    if(b[n] == vocali [i])
    contatore++;}
    return contatore;
    }
    
    
    int main()
    {      
    char stringa[25];
    cout<<"immetti stringa:";
    cout<<endl;
    leggi_nome_file(stringa);
    cout<<leggi(stringa);
    cout<<endl;
    system("pause");
    return 0;}
  • Re: Contare le vocali

    Hai imparato ad usare la classe string?
  • Re: Contare le vocali

    È guarda,non bene,magari se mi potessi dire gli errori mi rendo conto,grazie
  • Re: Contare le vocali

    
    #include <iostream>
    
    using namespace std;
    void leggi_nome_file(char a[])
    {
    	cin.getline(a,24);
    }
    int leggi(char b[])
    {
    	int contatore = 0;
    	char vocali[5] = {'a','e','i','o','u'};
    	for(int n = 0; n<25; n++)
    	{
    		for(int i= 0;i<5;i++)
    		{
    			if(b[n] == vocali [i])
    				contatore++;
    		}
    	}
    	return contatore;
    }
    
    
    int main()
    {     
    	char stringa[25] = {0};
    
    	cout<<"immetti stringa:";
    	cout<<endl;
    
    	leggi_nome_file(stringa);
    
    	cout<<leggi(stringa);
    
    	cout<<endl;
    	system("pause");
    	return 0;
    }
    
    cin >> a non ti prende tutta la stringa se essa contiene dei spazi.devi usare cin.getline
  • Re: Contare le vocali

    Oh grazie,adesso va infatti,ma una domanda,se ad esempio non so quanto è lunga la stringa?come faccio?non posso scrivere stringa[25],come posso fare?e per il for?non potrei scrivere
    for(int n = 0; n<25; n++)
  • Re: Contare le vocali

    Per quello che ti dicevo di usare la classe string. vedi come diventa il tuo programma con la classe string.
    
    #include <iostream>
    #include <string>
    
    using namespace std;
    void leggi_nome_file(string & a)
    {
    	getline(cin,a);
    }
    int leggi(const string & b)
    {
    	int contatore = 0;
    	int length = b.length();
    	char vocali[5] = {'a','e','i','o','u'};
    	for(int n = 0; n<length; n++)
    	{
    		for(int i= 0;i<5;i++)
    		{
    			if(b[n] == vocali [i])
    				contatore++;
    		}
    	}
    	return contatore;
    }
    
    
    int main()
    {     
    	string stringa;
    
    	cout<<"immetti stringa:";
    	cout<<endl;
    
    	leggi_nome_file(stringa);
    
    	cout<<leggi(stringa);
    
    	cout<<endl;
    	system("pause");
    	return 0;
    }
    
    Non devi specificare quanto è lungo l'array non devi mettere numeri e sai sempre la lunghezza della stringa con la funzione length().
  • Re: Contare le vocali

    Ah capito,poi lo studierò bene,riparlando delle vocali però,io ho messo solo quelle in minuscolo,e se ce c'è una maiuscola o una accentata?non la riconosce?
  • Re: Contare le vocali

    No. Dovresti allargare l'array per comprendere anche quelle. Se vuoi includere anche le maiuscole dovresti usare la funzione tolower per trasformare la stringa tutta in minuscola prima di fare il confronto.
  • Re: Contare le vocali

    Ah capito e ci metto pure le maiuscole?quindi diventa di 15 elementi
  • Re: Contare le vocali

    Vedi tu non ho fatto i conti.
  • Re: Contare le vocali

    C'è un problema:(,non mi riconosce le accentate:(,perchè?ti scrivo il programma:
    #include <iostream>
      using namespace std;
      
    void leggi_nome_file(char a[])
    {
       cin.getline(a,24);
    }
    int leggi(char b[])
    {
       int contatore = 0;
       char vocali[15] = {'a','e','i','o','u','ì','ò','à','ù','è','A','E','I','O','U'};
       for(int n = 0; n<25; n++)
       {
          for(int i= 0;i<15;i++)
          {
             if(b[n] == vocali [i])
                contatore++;
          }
       }
       return contatore;
    }
    
    
    int main()
    {     
       char stringa[25] = {0};
    
       cout<<"immetti stringa:";
       cout<<endl;
    
       leggi_nome_file(stringa);
    
       cout<<leggi(stringa);
    
       cout<<endl;
       system("pause");
       return 0;
    }
  • Re: Contare le vocali

    Perche sono UNICODE. Quì andiamo sul dificile quindi ti dico di lasciare stare x il momento.
  • Re: Contare le vocali

    Ah capito,grazie mille!!!!!!!
Devi accedere o registrarti per scrivere nel forum
14 risposte