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

Ile jest liczb parzystych, ile nieparzystych?

Object Storage Arubacloud
0 głosów
4,819 wizyt
pytanie zadane 28 grudnia 2016 w C i C++ przez szejmys Nowicjusz (160 p.)

Czołem!

Treść zadania brzmi: Program z użyciem sad pętli while, który sprawdza czy więcej jest cyfr parzystych, czy nieparzystych we wczytanej liczbie. Mój program działa, ale niepoprawnie :D. Wpisując np "4455" wyświetla, że więcej jest cyfr nieparzystych. Z góry dziękuję za pomoc :)  Mój kod to:

#include <iostream>
#include <cstdlib>
using namespace std;
int a, b;
int i=0;
int j=0;
int main()
{
    cout << "Podaj liczbe calkowita: ";
    cin >> a;
    b=a%10;


while (a>0)
{
        if (b%2==0)
        {

            i++;
            a/=10;
        }
        else
        {
            j++;
            a/=10;
        }

}
   if (i>j)
        cout << "Wiecej jest cyfr parzystych niz nieparzystych." << endl;
    else if (i==j)
        cout << "Cyfr nieparzystych i parzystych jest tyle samo." << endl;
 else 
       cout << "Cyfr nieparzystych jest wiecej niz parzystych." << endl;
    return 0;
}

 

3 odpowiedzi

+1 głos
odpowiedź 28 grudnia 2016 przez Marcin2000Xpl Gaduła (3,250 p.)

Pierwszym najważniejszym twoim błędem było utworzenie zmiennej b, która pozostawała nie zmieniona, a to na jej podstawie ustalałeś parzystość poszczególnych liczb. Ja bym to napisał tak: 

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    int a;
    int i=0;
    int j=0;
    cout << "Podaj liczbe calkowita: ";
    cin >> a;

    while (a>0)
    {
            if((a%10)%2==0){
                i++;
            }else{
                j++;
            }
            a/=10;
    }

    if (i>j)
        cout << "Wiecej jest cyfr parzystych niz nieparzystych." << endl;
    else if (i==j)
        cout << "Cyfr nieparzystych i parzystych jest tyle samo." << endl;
    else
       cout << "Cyfr nieparzystych jest wiecej niz parzystych." << endl;
    return 0;
}

A twoim sposobem tak:

#include <iostream>
#include <cstdlib>

using namespace std;

int a, b;
int i=0;
int j=0;
int main()
{
    cout << "Podaj liczbe calkowita: ";
    cin >> a;

    while (a>0)
    {
        b=a%10;
        if (b%2==0)
        {

            i++;
            a/=10;
        }
        else
        {
            j++;
            a/=10;
        }

    }
    if (i>j)
        cout << "Wiecej jest cyfr parzystych niz nieparzystych." << endl;
    else if (i==j)
        cout << "Cyfr nieparzystych i parzystych jest tyle samo." << endl;
    else
        cout << "Cyfr nieparzystych jest wiecej niz parzystych." << endl;
    return 0;
}

 

komentarz 28 grudnia 2016 przez szejmys Nowicjusz (160 p.)
Dzięki, najpierw zrobiłem bez deklaracji b, podobnie do Twojego sposobu ale mi nie wychodziło dlatego próbowałem to rozwiązać metodą prób i błędów.

 

Dziękuję i pozdrawiam :)
+1 głos
odpowiedź 28 grudnia 2016 przez morele123 Gaduła (4,790 p.)
Zakładając, że nie implikujesz własnej arytmetyki do programu, to najprościej jest sprawdzać całą liczbę, czy jest podzielna na 2, jak tak to jej ostatnia cyfra jest parzysta w przeciwnym wypadku jej ostatnia cyfra jest nieparzysta. Do jakiejś zmiennej pomocniczej zapisujesz ilość liczb parzystych w ten sposób i liczb nieparzystych. Następnie po prostu porównaj te dwie wartości i wypisz odpowiedź.
0 głosów
odpowiedź 28 grudnia 2016 przez niezalogowany
Wartość do b jest przypisywana tylko raz w linii 11

btw po co ci zmienne globalne?

Podobne pytania

+1 głos
1 odpowiedź 1,084 wizyt
0 głosów
1 odpowiedź 668 wizyt
pytanie zadane 20 lutego 2022 w C i C++ przez Ashiro Nowicjusz (210 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 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!

...