Programma consonanti in C++

di il
8 risposte

Programma consonanti in C++

Salve a tutti, ho un problema con questo programma, non capisco perchè mi da in output dei caratteri strani e non riesco a trovare l'errore. Prima di fare la funzione di tipo char l'avevo fatta void e l'output era corretto. Ecco il codice


#include <iostream>
#include <string>
#define n 25
#define v 3
using namespace std;

char ConsonantiCognome(char, char, int, int);

char ConsonantiCognome(char cognome[n], char cod_cognome[v], int numero_consonanti = 0, int numero_vocali = 0)
{

    for(int i=0; cognome[i]!='\0'; i++)
    {
        if(cognome[i] == 'a'|| cognome[i] == 'e' || cognome [i] == 'i' || cognome[i] == 'o' || cognome[i] == 'u' || cognome[i] == 'A'
                || cognome[i] == 'E' || cognome[i] == 'I' || cognome[i] == 'O' || cognome[i] == 'U' || cognome[i] == ' ')
        {
            numero_vocali++;
        }
        else
        {
            for(int j=numero_consonanti; j<v; j++)
            {
                cod_cognome[j] = cognome[i];
            }
            numero_consonanti++;
        }
    }

    return cod_cognome[v];

}

int main()
{
    char cognome[n];
    char cod_cognome[v];
    int numero_consonanti;
    int numero_vocali;
    cout <<"Cognome : ";
    cin.getline(cognome, n);

    cod_cognome[v] = ConsonantiCognome(cognome, cod_cognome, numero_consonanti, numero_vocali);
    for(int i=0; i<v; i++){
        cout << cod_cognome[i];
    }

    return 0;
}

8 Risposte

  • Re: Programma consonanti in C++

    Ma cosa dovrebbe fare questo programma?
  • Re: Programma consonanti in C++

    Si scusate non l'ho scritto... deve mettere in output le prime 3 consonanti
  • Re: Programma consonanti in C++

    Le prime tre come maggior numero di presenze?
  • Re: Programma consonanti in C++

    No, una volta trovate le prime 3 si ferma infatti ho messo il vettore di dimensione 3
  • Re: Programma consonanti in C++

    E perché conti le vocali e le consonanti e le restituisci? Inoltre la funzione non deve restituire char, deve essere void dato che ha tutto quello che serve in input
  • Re: Programma consonanti in C++

    Grazie mille ho risolto ecco qua :
    
    #include <iostream>
    #include <string>
    #define n 25
    #define v 3
    using namespace std;
    
    void ConsonantiCognome(char, char, int, int);
    
    void ConsonantiCognome(char cognome[n], char cod_cognome[v], int numero_consonanti = 0, int numero_vocali = 0)
    {
    
        for(int i=0; cognome[i]!='\0'; i++)
        {
            if(cognome[i] == 'a'|| cognome[i] == 'e' || cognome [i] == 'i' || cognome[i] == 'o' || cognome[i] == 'u' || cognome[i] == 'A'
                    || cognome[i] == 'E' || cognome[i] == 'I' || cognome[i] == 'O' || cognome[i] == 'U' || cognome[i] == ' ')
            {
                numero_vocali++;
            }
            else
            {
                for(int j=numero_consonanti; j<v; j++)
                {
                    cod_cognome[j] = cognome[i];
                }
                numero_consonanti++;
            }
        }
    
    }
    
    int main()
    {
        char cognome[n];
        char cod_cognome[v];
        int numero_consonanti = 0;
        int numero_vocali = 0;
        cout <<"Cognome : ";
        cin.getline(cognome, n);
    
        ConsonantiCognome(cognome, cod_cognome, numero_consonanti, numero_vocali);
    
        for(int i=0; i<v; i++){
            cout << cod_cognome[i];
        }
    
        return 0;
    }
    
    
  • Re: Programma consonanti in C++

    Solo che queste due non possono coesistere

    void ConsonantiCognome(char, char, int, int);

    void ConsonantiCognome(char cognome[n], char cod_cognome[v], int numero_consonanti = 0, int numero_vocali = 0)

    perché sono dichiarazioni diverse.

    Un esempio semplificato è questo
    
    #include <iostream>
    
    #define N 25
    #define V 3
    
    using namespace std;
    
    void ConsonantiCognome(char cognome[N], char cod_cognome[V])
    {
    	int cons=0;
    
        for(int i=0; cognome[i]!='\0' && cons<V; i++)
        {
            if(cognome[i] == 'a'|| cognome[i] == 'e' || cognome [i] == 'i' || cognome[i] == 'o' || cognome[i] == 'u' || cognome[i] == 'A'
                    || cognome[i] == 'E' || cognome[i] == 'I' || cognome[i] == 'O' || cognome[i] == 'U' || cognome[i] == ' ')
            {
            }
            else
            {
    			cod_cognome[cons++] = cognome[i];
            }
        }
    }
    
    int main()
    {
        char cognome[N];
    	char cod_cognome[V] = {0};
    
    	cout <<"Cognome : ";
        cin.getline(cognome, N);
    
        ConsonantiCognome(cognome, cod_cognome);
        
    	for(int i=0; i<V; i++)
            cout << cod_cognome[i] ;
        
        return 0;
    }
    
  • Re: Programma consonanti in C++

    Ah grazie, quel for per le 3 consonanti dentro il for principale mi sembrava un po buttato li ma non sapevo fare in altro modo, ora il programma è più chiaro !
Devi accedere o registrarti per scrivere nel forum
8 risposte