Witam mam problem z funkcją Pary. Zadanie polega na wczytaniu liczb z pliku binarnego, utworzenia par <N,P> (nieparzyste, parzyste), nieparzyste są brane w kolejność występowania ich w pliku z danymi, zaś parzyste odwrotnej jak wystąpiły w pliku z danymi.
Funkcja w zasadzie działa, zapisuje mi pary do pliku ale nie tak jak trzeba
int Pary(const string &binarny, const string &tekstowy)
{
stack<int> parzyste; ///deklaracja stosu
queue<int> nieparzyste; ///deklaracja kolejki
int x;
ifstream dane;
dane.open(binarny.c_str(), ios_base::binary);
if(!dane.is_open())
return -1;
while(dane.read(reinterpret_cast <char *> (&x), sizeof(int))) ///dopoki czytamy dane to zmieniamy wskaznik z intow na wskaznik char
{
if(x%2==0)
parzyste.push(x);
else
nieparzyste.push(x);
}
ofstream wyniki;
wyniki.open(tekstowy.c_str(), ios_base::out);
int a=0, b=0;
while(!parzyste.empty() && !nieparzyste.empty()) ///dopoki parzyste nie sa puste i nieparzyste nie sa puste
{
a = parzyste.top();
b = nieparzyste.front();
cout<<a<<b;
wyniki<<"<"<<b<<","<<a<<">"<<endl;/// zapisujemy pare <N,P>
parzyste.pop();
nieparzyste.pop();
}
int ile=0;
int c=0,d=0;
while(!parzyste.empty() || !nieparzyste.empty()) ///dopoki parzyste nie sa puste lub nieparzyste nie sa puste
{
c=parzyste.top();
d=nieparzyste.front();
if(c!=NULL) /// jesli zostaly liczby parzyste zmniejszamy ile
ile--;
if(d!=NULL) /// jesli zostaly liczby nieparzyste zwiekszamy ile
ile++;
}
wyniki.close();
dane.close();
return ile;
}
int main()
{
cout<<Pary("binarny.bin","wynik.txt");
return 0;
}
W pliku binarny.bin mam zapisane liczby: 3 -2 -5 0 6 7 -4 -6 4 2 1
Do pliku wynikowego powinno utworzyć pary: <3,2> <-5,4> <7,-6><1,-4>
Natomiast do pliku zapisuje mi:
<868203503,873073974>
<841812493,755633460>
<892144141,168637962>
Czy ktoś mógłby naprowadzić mnie gdzie jest błąd?