matura inf 2011 PR - liczby (błędny algorytm?)

0

Cześć. Mam problem z programem.
Treść zadania:

Zadanie 6. Liczby inaczej (10 pkt)
W pliku liczby.txt, w oddzielnych wierszach, znajduje się 1000 liczb zapisanych w systemie dwójkowym o długościach zapisów od 2 do 16 cyfr (0 lub 1). Napisz program, którego wykonanie da odpowiedzi do poniż szych podpunktów. Odpowiedzi zapisz w pliku zadanie6.txt, a każdą odpowiedź poprzedź literą oznaczającą ten podpunkt.
a) Ile jest liczb parzystych w całym pliku?
b) Jaka jest największa liczba w tym pliku? Podaj jej wartość w dwóch systemach: dwójkowym i dziesiętnym.
c) Ile liczb w całym pliku ma dokładnie 9 cyfr? Podaj sumę tych liczb w systemie dwójkowym.

Aktualnie interesuje mnie tylko podpunkt C.
Nie chcę także żebyście mi pisali czy podawali interpretację tego problemu przez siebie/inne osoby.
Mam problem z swoim programem i właśnie to chcę rozwiązać. Nie potrzebuję działającego programu (czyjegoś).

Więc tak. W odpowiedziach maturalnych pisze:

W całym pliku dokładnie 9 cyfr ma 101 liczb.

Na razie interesuje mnie tylko pierwsza część podpunktu C - zliczenie ile liczb ma dokładnie 9 cyfr.

Naskrobałem coś takiego:

#include <iostream>

using namespace std;

int main()
{
    int licznik = 0; // ustawienie licznika na 0
    for (int i=0; i<1000; i++) // wczytanie 1000 kolejnych liczb
    {
        double liczba; //
        cin >> liczba;
        if (liczba / 1000000000 > 0.1 && liczba / 1000000000 < 1) // jeżeli liczba podzielona przez 1 000 000 000 jest większa od 0.1 i mniejsza od 1
        {
            cout << int(liczba) << endl; // napisz mi tą liczbę (dla testu)
            licznik++; // dodaj do licznika 1
        }
    }
    cout << "C: " << licznik; // napisz wynik
    return 0;
}

Sposób użycia:
Tworzymy w tym samym katalogu co program plik nazwa.bat z zawartością:
nazwaprogramu.exe <liczby.txt >odp.txt

Zmieniamy według własnych potrzeb nazwaprogramu.exe oraz nazwa.bat.

Wynik mojego programu:

110100101
...
110101011
C: 100

Więc brakuje mi jednej liczby.

Czy ktoś pomógłby mi odnaleźć błąd w moim programie?
liczby.txt w załączniku
Pozdrawiam.

0

if((100000000<=liczba)&&(licbza<=999999999))

0

Dziękuję za szybką odpowiedź :)
Porównałem sobie wyniki i wyszło że w moim warunku pomijano:
100000000
I właściwie bo warunek tego nie spełniał.
Tak nawiasem pisałeś tak szybko że: **licbza **:D

Co do tematu to warunek mógłby też być taki:
if (liczba / 1000000000 >= 0.1 && liczba / 1000000000 < 1)

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