Witam. Usiłuję zrobić to zadanie: https://pl.spoj.com/problems/WI_IDEN/. W testach ciągle wychodzi jakiś błąd, a ja już nie mam pojęcia co jest nie tak. Z góry dzięki za pomoc :)
#include <iostream>
#include <string>
using namespace std;
int main()
{
int dlug;
string nazwa;
cin >> dlug >> nazwa;
if (nazwa.size() <= dlug) cout << nazwa;
else
{
for (int i = 0; i < nazwa.size(); i++) //od konca usuwamy znaki nie bedace literami i cyframi
{
size_t poz;
poz = nazwa.find_last_not_of("$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvxyz1234567890");
if (poz != string::npos)
{
nazwa.erase(poz, 1);
if (nazwa.size() == dlug) cout << nazwa;
}
else break;
}
for (int i = 0; i < nazwa.size(); i++)//od konca usuwamy kolejne cyfry
{
size_t poz;
poz = nazwa.find_last_of("1234567890");
if (poz != string::npos)
{
nazwa.erase(poz, 1);
if (nazwa.size() == dlug) cout << nazwa;
}
else break;
}
for (int i = 0; i < nazwa.size(); i++)//od drugiej litery usuwamy kolejne samogloski
{
size_t poz;
poz = nazwa.find_first_of("AEIOUYaeiouy");
if (poz != string::npos)
{
if (poz == 0) continue;
else
{
nazwa.erase(poz, 1);
if (nazwa.size() == dlug) cout << nazwa;
}
}
else break;
}
while(nazwa.size() > dlug)
{
nazwa.erase(nazwa.size() - 1, 1);
}
cout << nazwa;
}
}