• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Odczyt z pliku - sprawdzanie parzystości

Object Storage Arubacloud
0 głosów
798 wizyt
pytanie zadane 11 maja 2016 w C i C++ przez Evelek Nałogowiec (28,960 p.)

Mam plik tekstowy w którym znajdują się liczby zakończone zerem lub jedynką, czyli np. 10010001, 100110010 itd.

Napisałem program, który pobiera dane z pliku tekstowego, a następnie sprawdza czy liczba jest parzysta. Rozwiązałem to w ten sposób, że stworzyłem zmienną char, a za pomocą .length()-1 pobieram ostatnią cyfrę z danej liczby. Mój kod programu wygląda tak:

#include <iostream>
#include <fstream>

using namespace std;

int main()

{
    fstream plik;
    plik.open("liczby.txt", ios::in);

    string dane;
    char znak;
    int licz = 0;

    while (!plik.eof())
    {
        getline(plik, dane);
        znak = dane[dane.length()-1];
        if (znak == '0')
        {
            licz++;
        }
    }
    cout << licz << endl;
    
    return 0;
}

W tym momencie pokazuje mi poprawną ilość liczb. Ale ja dopisałem do pliku tekstowego dodatkowo liczby: 292, 294, 306, 408. Więc teraz, aby podliczyć wszystkie parzyste, zmieniłem warunek, i wiersz 20 kodu wygląda następująco:

if (znak == '0' || '2' || '4' || '6' || '8')

I w tym momencie kompilator pokazuje mi, że liczb parzystych jest 1004. A ja dopisałem tylko 4 parzyste, więc powinno ich być 504.

Poprosiłbym o pomoc, być może ten warunek z if z 20 wiersza źle napisałem.

2 odpowiedzi

+1 głos
odpowiedź 11 maja 2016 przez mrcnsct Nałogowiec (36,390 p.)
wybrane 11 maja 2016 przez Evelek
 
Najlepsza
if (znak == '0' || znak== '2' || znak== '4' || znak== '6' || znak== '8')

 

komentarz 11 maja 2016 przez Evelek Nałogowiec (28,960 p.)
Działa poprawnie, dziękuje.
komentarz 11 maja 2016 przez mrcnsct Nałogowiec (36,390 p.)
A wiesz czego tak jest? Każda liczba różna od 0 ma wartość logiczną 1. Znaki są jak liczby (ASCII). Jak masz: if(znak=='0' || '2') to to zawsze się wykona, bo '2' ma wartość logiczną 1. Dlatego trzeba if(znak=='0' || znak=='2').
komentarz 11 maja 2016 przez Evelek Nałogowiec (28,960 p.)
No i dlatego mi się wszystkie liczby dodały jakie były w pliku tekstowym...
0 głosów
odpowiedź 12 maja 2016 przez Evelek Nałogowiec (28,960 p.)

Jeszcze jedno pytanie co do tego przykładu. A jeśli chciałbym sprawdzić pierwszą cyfrę w liczbie a nie ostatnią, to jak przerobić tą funkcje?

Mamy:

znak = dane[dane.length()-1]

I chcę, aby sprawdził pierwszą cyfrę, w jaki sposób to można zamienić?

komentarz 12 maja 2016 przez Evelek Nałogowiec (28,960 p.)

Czy zamiana na:

znak = dane[0];

jest poprawna?

komentarz 12 maja 2016 przez criss Mędrzec (172,590 p.)
Tak

Podobne pytania

+1 głos
3 odpowiedzi 3,586 wizyt
pytanie zadane 6 października 2016 w C i C++ przez Arek Użytkownik (510 p.)
0 głosów
0 odpowiedzi 686 wizyt
pytanie zadane 15 kwietnia 2017 w Java przez plkpiotr Stary wyjadacz (12,420 p.)
0 głosów
2 odpowiedzi 230 wizyt
pytanie zadane 29 grudnia 2016 w C i C++ przez breeg Początkujący (390 p.)

92,555 zapytań

141,404 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...