Dzień dobry
Pozwolę sobie odświeżyć ten temat, gdyż również zmagam się z tym problemem. Sędzia znajduje w moim programie jakąś błędną odpowiedź, niestety nie mam pojęcia w jakim przypadku. Przykładowe wartości testowe mi działają poprawnie. Oto mój kod:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int d;
cin>>d; //zmienna do ilosci testow
for (int i=0;i<=d;i++)
{
string napis; //tworzenie lancucha
getline(cin,napis); //czytanie lini
int base=0,y=1,licznik=1; //zmienne sluzace do porownywania liter oraz zliczajace takie same wystapeinia
int last=napis.length(); //zmienna jak długi jest wyraz
cout<<napis[base]; //wypisuje 1 litere lancucha
do
{
if((y<=last) && (napis[y]==napis[base])) //gdy porownywane litery sa jednakowe
{
licznik++;
if ((y==last-1) && (licznik>2))
cout<<licznik;
if ((y==last-1) && (licznik==2))
cout<<napis[y-1];
}
if((y<=last) && (napis[y]!=napis[base])) //gdy porownywane litery sie roznia
{
if (licznik>2)
{
cout<<licznik;
licznik=1;
base=y;
cout<<napis[base];
}
else if (licznik==2)
{
cout<<napis[y-1];
licznik=1;
base=y;
cout<<napis[base];
}
else
{
cout<<napis[y];
licznik=1;
base=y;
}
}
y++;
}
while (y<last);
cout<<endl;
}
return 0;
}
Proszę o lekką wyrozumiałość, jestem początkującym zawodnikiem 