Dev-C++ błędy w starszej wersji

0

Witam
Jutro piszę maturę z informatyki. Zadeklarowałem, że środowisko w jakim będę pisał programy to Dev-C++. Wydawało mi się, że nie będzie problemów, gdyż sam w domu z tego korzystam i nie narzekam :) Dziś właśnie testowałem w szkole stanowisko i okazało się, że będę robił na starszej wersji Deva(4.9.9.2). Tu pojawia się problem, ponieważ napisałem sobie testowy algorytm na podstawie matury 2013. Wygląda on tak:

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    int i,j=0,parz=0,zero=0,jeden=0,zeroLicz=0,jedenLicz=0,k=0;
    string wiersz,znak,w;
    ifstream plik;
// ZADANIE 1
    plik.open("napisy.txt"); 
    while(plik.good())
    {
    string wiersz="";
    plik>>wiersz; if(wiersz == "") break;
    if(wiersz.length()%2 ==0) parz++;   
    }
    cout<<"Liczba napisow o parzystej dlugosci:"<<parz<<endl;
    plik.close();
// ZADANIE 2
    plik.open("napisy.txt");
    while(plik.good())
    {
        plik>>wiersz; if(wiersz == "") break;
        zero=0;jeden=0;
        for(i=0;i<wiersz.length();i++)
        {
            w=wiersz[i];
            if(w=="0") zero++; else if(w=="1")jeden++;
        }
        if(zero==jeden) j++;
    }
    cout<<j<<endl;
    plik.close();
// ZADANIE 3
    plik.open("napisy.txt");
    while(plik.good())
    {
        wiersz="";
        plik>>wiersz; if(wiersz == "") break;
        zero=0;jeden=0;
        for(i=0;i<wiersz.length();i++)
        {
            if(wiersz == "") break;
            w=wiersz[i];
            if(w=="0") zero++; if(w=="1")jeden++;
        }
        if ((jeden==0)&(zero>0))zeroLicz++; else
        if ((zero==0)&(jeden>0))jedenLicz++;
    }
    cout<<"zera "<<zeroLicz<<" jedynki "<<jedenLicz<<endl;
    plik.close();
// ZADANIE 4 
    for (i=2;i<=16;i++)
    {
        k=0;
        plik.open("napisy.txt");
        while(plik.good())
        {
            wiersz="";
            plik>>wiersz;
            if(wiersz == "") break;
            if (wiersz.length()==i) k++;
        }
        cout<<k<<endl;
        plik.close();
    }
    system("pause"); return 0;
}

Niby wszystko prawidłowo. Na wersji 5.11 działa i poprawnie wypisuje wszystkie liczby. Na wersji 4.9.9.2 natomiast, poprawnie wykonuje się tylko zadanie A. W całej reszcie wypisywane są same zera(tak jakby nie pobierało wierszy z pliku). Jeśli nic z tym nie zrobię, to mogę zawalić jutrzejszą maturę. Co robię źle?
Plik z danymi wejściowymi w załączniku

0

Myślę że ważniejsza od wersji IDE jest wersja kompilatora. Równie dobrze możesz program pisać z notatniku, a uzyskany efekt nie powinien się zmienić, o ile kompilator pozostaje ten sam.

1

Zapewne w domu kompilujesz w C++11, a w szkole w starszej wersji standardu - tam nie jest czyszczony przy otwarciu state flag

0

kaczus - Wielkie dzięki! Z tego co wyczytałem, wystarczy użyć funkcji plik.clear();. Teraz wszystko działa poprawnie :)

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