Stringhe, conta tre consonanti

di il
11 risposte

Stringhe, conta tre consonanti

Praticamente quando avvio il programma parte la funziona ma mi da che qualsiasi frase ha almeno tre consonanti
#include <iostream>
#include <string>
using namespace std;

void contaConsonanti(const string &s1)
{
	int conta_consonanti=0;
	
while(conta_consonanti<3)
{	
	for(int x=0; x<s1.size(); x++)
	{
	    char stringa = s1[x];
	    if(stringa=='B' || stringa=='b')
	    {
	    	conta_consonanti++;
		}
		else if(stringa=='C' || stringa=='c')
		{
			conta_consonanti++;
		}
		else if(stringa=='D' || stringa=='d')
		{
			conta_consonanti++;
		}
		else if(stringa=='F' || stringa=='f')
		{
			conta_consonanti++;
		}
		else if(stringa=='H' || stringa=='h')
		{
			conta_consonanti++;
		}
		else if(stringa=='L' || stringa=='l')
		{
			conta_consonanti++;
		}
		else if(stringa=='M' || stringa=='m')
		{
			conta_consonanti++;
		}
		else if(stringa=='G' || stringa=='g')
		{
			conta_consonanti++;
		}
		else if(stringa=='N' || stringa=='n')
		{
			conta_consonanti++;
		}
		else if(stringa=='P' || stringa=='p')
		{
			conta_consonanti++;
		}
		else if(stringa=='Q' || stringa=='q')
		{
			conta_consonanti++;
		}
		else if(stringa=='R' || stringa=='r')
		{
			conta_consonanti++;
		}
		else if(stringa=='S' || stringa=='s')
		{
			conta_consonanti++;
		}
		else if(stringa=='T' || stringa=='t')
		{
			conta_consonanti++;
		}
		else if(stringa=='V' || stringa=='v')
		{
			conta_consonanti++;
		}
		else if(stringa=='Z' || stringa=='z')
		{
			conta_consonanti++;
		}
	}   
}
	
	if(conta_consonanti>=3)
	{
		cout<<"Ci sono tre consonanti consecutive nella frase."<<'\n';
	}
	else
	{
		cout<<"Non ci sono tre consonanti consecutive nella frase."<<'\n';
	}
}
    
  


int main()
{
	string s1 = "botte";
	cout<<s1<<'\n';
	contaConsonanti(s1);

}

11 Risposte

  • Re: Stringhe, conta tre consonanti

    Almeno fai la logica inversa sulle vocali... ma che voglia hai di complicarti la vita
  • Re: Stringhe, conta tre consonanti

    Comunque hai invertito for e while, quindi non puoi uscire dal while se le consonanti sono meno di 3
  • Re: Stringhe, conta tre consonanti

    Noccapito, in che senso ho invertito while e for
  • Re: Stringhe, conta tre consonanti

    Togli direttamente il while che non serve a una mazza
  • Re: Stringhe, conta tre consonanti

    Dopo però mi conta tutte le consonanti e non tre consecutive il problema e trovarne 3 consecutive
  • Re: Stringhe, conta tre consonanti

    DOVE hai scritto fino ad ora che dovevano essere CONSECUTIVE?
  • Re: Stringhe, conta tre consonanti

    Infatti, non l'hai scritto!

    E comunque il while non ti serve lo stesso. Ti serve una variabile booleana che va a true quando conta_consonanti supera 2 dentro il for. Sempre dentro il for devi azzerare la stessa variabile conta_consonanti se il carattere non è una consonante
  • Re: Stringhe, conta tre consonanti

    Proviamo
    
    /*
     * (C)2019  IProgrammatori.it
     *
     * Il compito piu bello sara' quello che farai da solo.
     *
     * L'amore per il C/C++ non e' nel compito di scuola.
     *
     * In Linux:     g++ main.cc -o consonanti
     */
    
    #include <iostream>
    
    using namespace std;
    
    const char consonanti[] = "bcdfghjklmnpqrtsvwxyz";
    
    static char minor(char c)
    {
            if (c >= 65 && c <= 90)
                    return c + 32;
    
            return c;
    }
    
    int main(int argc, char **argv)
    {
            if (argc != 2) {
                    cout << "usage: consonanti \"frase\"\n";
                    return -1;
            }
    
            string frase(argv[1]);
            int i, q, count = 0;
    
            for (i = 0; i < frase.size(); ++i) {
                    for (q = 0; q < sizeof(consonanti); ++q) {
                            if (minor(frase[i]) == consonanti[q])
                                    count++;
                    }
            }
    
            cout << "ci sono " << count << " consonanti\n";
    
            return 0;
    }
    
    
  • Re: Stringhe, conta tre consonanti

    @spectrum .... dare a tutti la pappa pronta non aiuta chi sta imparando ... a prescindere dal regolamento del forum...
  • Re: Stringhe, conta tre consonanti

    @oregon

    proporre una soluzione alternativa non implica che la devi copiare. Piuttosto, la puoi osservare e fare delle domande. Con le conoscenze acquisite puoi fare un lavoro migliore.

    Ho postato qui in questo forum alcune cose in questi giorni. Vedo che non vengono gradite. Non mi vedrete piu. Saluti.
  • Re: Stringhe, conta tre consonanti

    spectrum ha scritto:


    @oregon

    proporre una soluzione alternativa non implica che la devi copiare.
    Dare consigli sul modo alternativo di affrontare i problemi ha un senso. Dare tutto il codice pronto ti assicuro che, per gli studenti, non è formativo (a parte essere vietato dal regolamento...).
    Loro copiano il codice fornito come pappa pronta
    (escluso il (C) copyright ovviamente.. )
Devi accedere o registrarti per scrivere nel forum
11 risposte