Aiuto urgente su array

di Anonimizzato13790 il
8 risposte
1. Si scriva un programma C++ che, letta da input una sequenza di caratteri (si intendono qui
lettere minuscole dell’alfabeto) terminata dal carattere ‘.’ (“punto”), stampi su standard output il numero
di sottosequenze, definite come di seguito, che la compongono.
Ogni sottosequenza è composta da vocali e consonanti alternate, cioè una vocale seguita da una
consonante, a sua volta seguita da una vocale, e così via. La sottosequenza può iniziare tanto con una
vocale quanto con una consonante. Le sottosequenze sono separate le une dalle altre da coppie di vocali o
coppie di consonanti: quindi, ogni volta che si incontrano due vocali di seguito (o, equivalentemente, due
consonanti di seguito), termina una sottosequenza e ne inizia un’altra.
ESEMPIO: data la sequenza { o g g i f a c a l d o . } , si individuano le sottosequenze: {og},
{gifacal}, {do} –Pertanto, il programma dovrebbe stampare su standard output il numero 3, pari al numero
di sottosequenze presenti. Se invece la sequenza data in input è { a a a b c . }, allora si individuano le
sottosequenze: {a}, {a}, {a b}, {c} e il programma dovrebbe stampare 4.
mi scrivete il codice perfavore nn riesco proprio a fare questo esercizio....

8 Risposte

  • Perche' non riesci a fare l'esercizio?
    Tutto? Improbabile, almeno il main, la lettura da tastiera e la stampa su schermo lo devi saper fare. Sono i primi esempi che trovi in qualunque testo di programmazione in c++.
    Certo, questo implica avere almeno aperto il libro
  • "Mi scrivete il codice .... urgente" ...

    Hai proprio capito male ... non si fanno queste richieste nel forum ...
  • #include <iostream>

    using namespace std;

    int main()
    {
    char string[100];
    char vocali[5]={'a','e','i','o','u'};
    int cont=0;
    int cont2=0;
    char car;
    while(car != '.')
    {
    cin>>car;
    string[cont]=car;
    cont++;
    }
    for(int i=0;i<cont;i++)
    for(int x=0;x<cont;x++)
    if(string==vocali[x] || string[i+1]==vocali[x])
    if(string != vocali[x] || string[i+1] != vocali[x])
    cont2++;

    cout<<cont2;
    return 0;
    }
    è sicuramente sbagliato ma come faccio a vedere se nell array che inserisco da tastiera ci sono elementi dell array 'vocali'???
  • Perché utilizzi cont in tutti e due i for? Cosa è cont? Quando dovrebbero terminare i due cicli?
  • [quote="oregon"]Perché utilizzi cont in tutti e due i for? Cosa è cont? Quando dovrebbero terminare i due cicli?[/quoti
    i due cicli devono terminare quando è stata controllata tutta la stringa inserita....
  • oregon ha scritto:


    Perché utilizzi cont in tutti e due i for? Cosa è cont? Quando dovrebbero terminare i due cicli?

    ho provato a creare una costante dim che aumenta ogni volta che inserisco un carattere da tastiera
    e poi i cicli terminavano finche il contatore era < di dim
  • 
    #include <iostream>
    
    using namespace std;
    
    int cerca_vocale (char c);
    
    int main()
    {
    char string[100];
    int cont=0;
    int cont2=0;
    char car;
    
    while(car != '.')
    {
    cin>>car;
    string[cont]=car;
    cont++;
    }
    
    for(int i=0;i < cont;i++)
    {
        if((cerca_vocale(string[i]) == 0 && cerca_vocale(string[i+1]) == 0) || (cerca_vocale(string[i]) == 1 && cerca_vocale(string[i+1]) == 1))
            cont2++;
    }
    
    cout<<cont2;
    return 0;
    }
    
    int cerca_vocale (char c)
    {
        if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')
            return 1;
        return 0;
    }
    
    Credo sia abbastanza intuitivo, semplice e sintentico. Cercavi in tutti i modi di complicarti la vita quando con una semplice funzione che controllava ogni carattere e tolta dal main per dare più leggibilità al codice ti semplificava tutto. Poi la logica del for è semplice se trova due vocali di fila o due consonanti di fila aumenta il conteggio. Spero di esserti stato d'aiuto e ricorda...chi programma a capodanno programma tutto l'anno! ahahahah
  • Davvero sono proprio un idiota.... grazie mille a tutti
Devi accedere o registrarti per scrivere nel forum
8 risposte