Palindromy zadanie z matury

0

Hej, może ktoś podpowie mi co jest tutaj nie tak. Program nie działa, a ja kompletnie nie wiem czemu. Zadanie z matury pp 2010. Ma wczytywać dane z pliku i po znalezieniu w nich palindromów je wypisać w nowym pliku.

#include <bits/stdc++.h>
using namespace std;

bool palindrom(string w)
{
    int i = 0;
    int j = w.size() - 1;
    while (i < w.size() / 2) {
        if (w[i] != w[j])
            return false;
        i++;
        j--;
    }
    return true;
}
int main()
{
    ifstream in("dane.txt");
    ofstream out("wynik.txt");
    string w1;
    while (in >> w1) {
        if (palindrom(w1)) {
            out << w1 << endl;
            cout << w1 << endl;
        }
        in.close();
        out.close();
    }
}
0

Jak dla mnie warunkiem while-a z funkcji powinno być i < j

1
bool palindrom(const string &w)
{
    for(int i=0,k=w.size();i<k;) if(w[i++]!=w[--k]) return false;
    return true;
}

Podaj w pliku dane.txt pierwszy wyraz palindrom oraz odpal jeszcze raz.

5

Zamykasz z jakiegoś powodu pliki wewnątrz pętli, czyli odczytana zostanie tylko jedna wartość, po czym plik zostanie zamknięty, nie będzie możliwy odczyt, i pętla się zakończy.

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