W skrócie - zrobiłem zadanie i spoj go zaakceptował, jednak jedna rzecz nie daje mi spokoju. Otóż nie rozumiem do końca co się dzieje w pętli w funkcji main. Gdyby wyciąć linie
C +=1;
to np dla C=2 pętla powinna wykonywać się 2 razy(i wydaje mi się ze wykonuje). Jednak po wpisaniu w konsoli pierwszego ciągu znaków program się zamyka. Po prostu wygląda to tak jakby pętla kończyła się o jeden obrót za szybko.
Ciężko jest mi opisać o co mi dokładnie chodzi, ale mam nadzieje, że zrozumieliście.
Mój kod:
#include <iostream>
#include <cstdio>
using namespace std;
void test(char *tab)
{
for(int j=0; tab[j]!='\n' ; ++j)
{
int counter=0; // licznik
for(; tab[j] == tab[j+1] ; ++j)
{
counter++;
}
cout << tab[j];
if(counter>=2)
cout << counter+1;
if(counter == 1)
j--;
}
}
int main()
{
int C;
cin >> C;
C +=1;
for(int j = 0; j<C ; ++j)
{
char a=0, tab[200];
for(int i = 0; a!='\n' ; ++i)
{
a = getchar();
tab[i] = a;
}
test(tab);
if(j>0) cout << '\n';
}
}