zadanie ze spoja - flamaster

0

Mam problem z tym oto zadaniem : http://pl.spoj.com/problems/FLAMASTE/
Napisałem kod i według mnie działa dobrze, ale sprawdzarka na SPOJ wywala błędną odpowiedź.
Przepraszam za bałagan w kodzie, jestem początkującym, proszę o sprawdzenie gdzie jest błąd i ew jakieś sugestie co poprawić lub jak sie wgl zabrać do tego zadania, z góry dzięki:
Oto kod:

#include <iostream>
#include <cstring>
int main()
{
    using namespace std;

    int n;
    cin >> n;
    int ile = 1;
    char wyraz[200];

    for (int j = 0; j < n; j++) {
        cin >> wyraz;
        for (int i = 0; i < strlen(wyraz); i++) {
            if (ile <= 2)
                cout << wyraz[i];
            else if (ile >= 3) {
                cout << ile;
                i += ile - 1;
                cout << wyraz[i];
            }
            ile = 1;
            for (int z = i + 1; wyraz[z] == wyraz[i]; z++)
                ile++;
        }
        cout << endl;
    }

    return 0;
}
2

Masz skopaną logikę, widać to w pierwszym kroku wewnętrznej pętli - od razu sprawdzasz ilość wystąpień czegoś co jeszcze nie zliczałeś.
Poza tym nie resetujesz liczby wystąpień pomiędzy "słowami".

Przykładowe dane we które to pokazują:

2
OOOPSSS
AAAABBBB

Wynik:

O3PS3
41

http://ideone.com/W6Po5K

1

OK, lepszy zbiór wejściowy:

2
AAABBB
BBBACC

Przy tym zbiorze na konsoli niby wszystko jest OK, ale na końcu pierwszej linijki do pliku generowane jest '\0' co może przekłamywać wynik testu.

41 33 42 33 00 0a 42 33 41 43 43 0a

Błędu nie widać na ekranie.

Edit: przy pierwszym zbiorze ten błąd też widać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1