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