Program obliczający czy liczba ma więcej 0 czy 1

0

Witam.

Napisałem programik który miał za zadanie sprawdzić ile liczb w pliku ma więcej 0 niż 1. Tylko za każdym razem pokazuje 1 albo 0, a tych liczb w pliku jest 432 bodajże. Pomógłby ktoś zlokalizować błąd?

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
fstream plik;
string linia;
int i;
int b,a,y;
b=a=y=0;
plik.open("liczby.txt", ios::in);
if(plik.good()==false)
{
                      cout<<"Nie udało się otworzyć pliku"<<endl;
                      exit(0);
}
   while(getline(plik,linia))
   {
                                   
                                               for(i=0; i<linia.length(); i++)
                                            {
                                              if(linia[i] == '0')
                                              { 
                                                          a++;
                                              }
                                              else
                                              {
                                                   b++;
                                              }
                                            }
                                             if(a>b) y++;
                                          
   }
                      cout<<y<<endl;
                       
                      system("PAUSE");
                      return 0;
}
 
3

Na pewno formatowanie.
Spróbuj nie uderzać losowo w spację.

0

Nie zerujesz a i b

0

Zeruje na samym początku.

0

Ale tylko dla pierwszej liczby, a ma podać ile liczb w pliku ma więcej zer niż jedynek.

0

Nie można zrobić tego po ludzku używając chociażby modulo zamiast traktować liczby jako tekst?

0

@Tumeg - w pliku i tak wszystko jest tekstem; Trzeba tylko sensowny licznik zrobić i może być.

0

Nie zerujesz a i b. Czyli a i b ma cały czas stan poprzednich liczb (przy pierwszej liczbie się tylko zgadza dlatego masz 0 albo 1, przy drugiej liczbie do a i b dodaje 0 i 1 z pierwszej i dodaje 0 i 1 z drugiej, przy trzeciej liczbie dodaje do a i b - 0 i 1 z pierwszej,drugiej i trzeciej idt.)

Wystarczy zerować a i b zaraz po instrukcji if.

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