Siema wszystkim!
Mam problem z zadaniem maturalnym, na poziomie rozszerzonym. Program spisuje mi o 1 grupę wyrazów za dużo (ostatnia linijka, w nowo utworzonym pliku wyniki.txt).
Byłbym NAPRAWDĘ wdzięczny gdyby ktoś potrafił znaleźć w moim kodzie błąd, a nie po prostu pisać od nowa własny.
Polecenie :
W pliku tekstowym anagram.txt znajduje się 200 wierszy zawierających po 5 słów w każdym wierszu. Słowa oddzielone są znakiem odstępu. Długość każdego ze słów wynosi od 1 do 20 znaków.
- Wyszukaj w pliku anagram.txt te wiersze, w których wszystkie słowa znajdujące się w danym wierszu mają taką samą liczbę znaków.
#include <iostream>
#include <cstring>
#include <fstream>
#include <cstdlib>
using namespace std;
int main()
{
string anagramy[201];
string slowoa[10];
int i=0;
int max,h;
string chwilowka;
int dlugosc, dlugoscdwa;
string temp,slowo;
int w,g;
int maxdl;
ifstream anagram;
ofstream wyniki;
anagram.open("anagram.txt");
wyniki.open("wyniki.txt");
g=0;
w=1;
maxdl=0;
// PRZEPISYWANIE DO TABLICY! //
while(!anagram.eof())
{
i=i+1;
getline(anagram, anagramy[i]);
}
max=i;
//Główna petla programu!//
for(i=1;i<=max;i++)
{
dlugosc=anagramy[i].length();
chwilowka=anagramy[i];
for(h=0;h<=dlugosc;h++)
{
if(isspace(chwilowka[h]))
{
w=w+1;
}
else
{
temp=chwilowka[h];
slowoa[w]=slowoa[w]+temp;
}
}
for(w=1;w<=4;w++)
{
dlugosc=slowoa[w].length();
dlugoscdwa=slowoa[4].length();
if(dlugosc!=dlugoscdwa)
{
g=1;
}
}
if(g==0)
{
wyniki<<slowoa[1]+" "+slowoa[2]+" "+slowoa[3]+" "+slowoa[4]+" "+slowoa[5]<<endl;
}
/* Czyszczenie zawartosci zmiennych */
g=0;
w=1;
slowoa[1].clear();
slowoa[2].clear();
slowoa[3].clear();
slowoa[4].clear();
slowoa[5].clear();
}
wyniki.close();
anagram.close();
cout<<"Koniec. Wcisnij ENTER.";
getchar();
return 0;
}
Problem jest w tym, że właśnie znajduje mi na końcu 1 wiersz, który nie ma równej ilości znaków.
Z góry dziękuję i pozdrawiam!