Pomoc z zadaniem maturalnym - liczba zer i jedynek

0

Cześć, mam taki program, mający policzyć liczbę zer i jedynek w danej liczbieu i wyświetlić ile jest liczb takich, gdzie jest więcej zer od jedynek. Napisałem coś takiego i proszę Was o pomoc, bo program się kompiluje, lecz dostaję czarną konsolę:

#include <iostream>
#include <fstream>

using namespace std;

int main() {
  int liczba_zer;
  int liczba_jedynek;
  int liczba;
  int a;

  string liczba1;

  ifstream plik("D:\Dane_PR2\liczby.txt");
  plik.open("D:\Dane_PR2\liczby.txt", ios::in);

  while (!plik.eof()) {
    getline(plik, liczba1);

    for (a = 0; a < 100; a++)

    {
      if (liczba1[a] == '1') liczba_jedynek++;

      if (liczba1[a] == '0') liczba_zer++;
    }
    if (liczba_jedynek < liczba_zer) liczba++;

    liczba_jedynek = 0;
  }

  cout << liczba;
}

0

edytowałem

0

@Tomek Polak liczba zer to zawsze nieskończoność jeśli nie masz ograniczenia na liczbę bitów liczby

1
  1. Nigdzie nie inicjalizujesz zmiennej liczba.
  2. Dziwna ta Twoja konstrukcja czytania z pliku. Proponuje zrobić while (getline(plik, liczba1)) { ... }.
  3. Masz pewność, że każda wczytana liczba będzie miała dokładnie 100 cyfr?
  4. Nie zerujesz zmiennej liczba_zer. liczba_jedynek już zerujesz.
  5. Nigdzie nie inicjalizujesz zminnych liczba_zer, liczba_jedynek.
  6. Dwa razy otwierasz plik. Raz tutaj: ifstream plik("D:\Dane_PR2\liczby.txt");, potem: plik.open("D:\Dane_PR2\liczby.txt", ios::in);
0

okej, mam coś takiego i działa, dziękuję za pomoc. Z tą setką to wkleiłem złą wersję programu, bo szukałem błędu, ostatecznie wygląda to tak. Nie jest to program najwyższych lotów zapewne, ale działa i pokazuje dobry wynik. dziękuję za pomoc

#include <iostream>
#include <fstream>

using namespace std;

int main() {
  int liczba_zer;
  int liczba_jedynek;
  int liczba = 0;
  int a = 0;

  string liczba1;

  ifstream plik("liczby.txt");

  while (getline(plik, liczba1)) {
    liczba_jedynek = 0;
    liczba_zer = 0;

    for (a = 0; a < liczba1.length(); a++)

    {
      if (liczba1[a] == '1') liczba_jedynek++;

      if (liczba1[a] == '0') liczba_zer++;
    }
    if (liczba_jedynek < liczba_zer) liczba++;
  }

  cout << liczba;
}

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