Ciao a tutti vi spiego il programma in C++:
Ho una stringa S , devo scansionare ogni lettera se c'è una vocale seguita da un'altra vocale tolgo la lettera immediatamente precedente alle due vocali scansionate.
Qualche esempio:
1) S = "aiuola" ==> S = "uola" poichè "a" è seguita da "iu" quindi va eliminata, rimane quindi "iuola". Però anche la "i" è seguita da due vocali "uo" così la "i" viene soppressa. Rimane "uola" (la "u" è seguita solo da una vocale quindi non viene eliminata). La stringa finale quindi è S = "uola".
2) S ="Ciao" ==> S ="ao" (stesso motivo di 1).
3) S = Priamo" ==> S = "piamo".
4) S = "Pippo" ==> S = "Pippo" (rimane pippo).
Vi posto il codice che ho fatto io ma ho un problema nella parte finale.
Lo spiego se non si capisce:
1) Ho trasformato la stringa S in una stringa diciamo di booleani ossia 1,0 (1 = vocali, 0 = consonanti).
2) Dopo Vorrei fare un controllo: Se ho due numeri "1" uno vicino all'altro tolgo la lettera subito a sinistra dei due numeri "1".
Aiuola = 111101 dovrebbe diventare ==> 1101.
Ecco il codice:
#include <iostream>
#include <string>
using namespace std;
void vocale(string s)
{
int l = s.length();
string g,h,z,y,final;
for(int i = 0; i < l; i++)
{
h = s.substr(i,1);
if(h =="a" || h=="e" || h =="i" || h =="o" || h =="u")
{
g = g + "1";
}
else
{
g = g + "0";
}
}
cout << "G = " << g <<"\n";
for(int i = 1; i < l; i++)
{
y = g.substr(i,1);
z = g.substr(i+1,1);
if(y == "1" && z == "1")
{
final = g.substr(i,l);
cout << final <<"\n";
}
}
cout <<"F = " << final <<"\n";
}
int main()
{
string s = "aiuola";
string x;
vocale(s);
return 0;
}
Ps: Ho messo qualche cout per il debugging !
Grazie delle eventuali risposte !