Witam.
Od pewnego czasu rozwiązuję zadania na Spoju. Ostatnio robiłem to: http://pl.spoj.com/problems/WI_IDEN/.
Program ma za zadanie skrócić podany tekst do podanej długości zgodnie z pewnymi zasadami. Niestety kod nie działa gdy należy zmienić samogłoskę i.Zamiast ALMKTPS zwraca ALMKTIP. Szukałem błędu ale nie mogłem go znaleźć.
Będę wdzięczny za każdą podpowiedź lub krytykę kodu.
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int n;
int dlugosc=0;
int k=0;
bool czyZmienic=false;
string tekst;
void wprowadz()
{
cin>>n;
cin>>tekst;
}
void sprawdzDlugosc()
{
if(tekst.length()<=n)
{
cout<<tekst;
exit(0); //wylacza program gdy tekst ma odpowiednia dlugosc
}
}
void usunZnak(int j)
{
tekst.erase(j,1);
sprawdzDlugosc();
}
void zmien()
{
sprawdzDlugosc();
for(int i=tekst.length();i>0;i--)
{
if(tekst[i]=='$'||tekst[i]=='_')
{
usunZnak(i);
}
}
for(int i=tekst.length();i>0;i--)
{
if(tekst[i]>='0'&&tekst[i]<='9')
{
usunZnak(i);
}
}
for(int j=0;j<tekst.length();j++)
{
if(tekst[j]=='a'||tekst[j]=='e'||tekst[j]=='i'||tekst[j]=='o'||tekst[j]=='u'||tekst[j]=='y'||tekst[j]=='A'||tekst[j]=='E'||tekst[j]=='I'||tekst[j]=='O'||tekst[j]=='U'||tekst[j]=='Y')
{
if(czyZmienic)
{
usunZnak(j);
}
czyZmienic=true;
}
}
for(int i=tekst.length()-1;i>0;i--)
{
usunZnak(i);
}
}
void wypisz()
{
cout<<tekst;
}
int main()
{
wprowadz();
zmien();
}