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

matura inf 2011 PR - liczby (błędny algorytm?)
P1
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 7 lat
  • Postów:15
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:

Kopiuj
#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:

Kopiuj
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.

edytowany 1x, ostatnio: panczo12d
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 14 godzin
0

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
P1
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 7 lat
  • Postów:15
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)

edytowany 1x, ostatnio: panczo12d
_13th_Dragon
oraz taki: if (liczba / 100000000 &gt;= 1 &amp;&amp; liczba / 100000000 &lt; 10) oraz taki: if (liczba / 20000000 &gt;= 5 &amp;&amp; liczba / 50000000 &lt; 20) ale te wszystkie kombinacje są bezsensowne.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.