Program wyswietlajace liczby parzyste i nie parzyste

0

Witam!

Chce napisać taki program:

Napisać program który: zapyta użytkownika o ilość podawanych liczb całkowitych, następnie zapyta o kolejne liczby.
Po wprowadzeniu wszystkich liczb, program wypisze w konsoli ile z nich było parzystych a ile nieparzystych.
Uwaga: w programie należy użyć pętli while. Nie wolno używać tablic.

Do tej pory udalo mi się zrobić coś takiego:

 #include <iostream>
#include <cstdlib>
#include <math.h>

using namespace std;

int main()
{
    int ilosc, liczba, l;

    cout << "Podaj ile liczb chcesz wpisac: ";
    cin >> ilosc;
    cout << endl;

    for (int i = 0; i < ilosc; i++)
    {
        cout << "Podaj liczbe nr " << i+1 << ": ";
        cin >> liczba;
        }

    l = 0;  
    while(l != liczba%2 ==0)
    {
    l++;
        for(liczba; liczba <=ilosc; liczba++)
        {
            cout << "Liczby parzyste to: " << liczba;
        }

    };

    while(liczba%2 ==1)
    {
        cout << "Liczby nie parzyste to: "<< liczba;

    };

system("PAUSE");
}

Wczytuje liczby z klawiatury ale nie wiem jak wyświetlić parzyste i nie parzyste z podanych liczb :/

Proszę o pomoc!

0

O teraz zrobiłem coś takiego:

 #include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    int ilosc, liczba;

    cout << "Podaj ilość liczb: ";
    cin >> ilosc;
    cout << endl;

    for (int i = 0; i < ilosc; i++)
    {
        cout << "Podaj liczbe " << i +1 << ": ";
        cin >> liczba;
    }

    int n;
    n = 0;
    while(n <= ilosc)
    {
        if(liczba%2 ==0)
        {
            cout << "Liczby parzyste: " << liczba << endl;
                }           
            else if(liczba%2 == 1)
            {
                cout << "Liczby nie parzyste " << liczba << endl;

            }

    break;  
    };

system("PAUSE");
}

Nawet działa tylko wyswietla mi tylko 1 liczbe parzystą a jak podam np ilosc 4 i same 1 to powinno wyswietlic 4 jedynki. Jak to zrobic?

0

Licz ilość parzystych i nieparzystych w pętli wczytującej liczby.

0

Tzn. jak?

0

Tzn przenieś porównania do pętli for i tam przy wczytywaniu kolejnych liczb sprawdzaj czy wczytana jest parzysta czy nie i zapisuj sobie ile było takich i takich do zmiennych. Z treści zadania nie wynika żebyś musiał wypisać 4 jedynki tylko liczbę 4 - że było tyle jedynek. Poza tym tego fora musisz chyba zastąpić while-em żeby mieć while wykorzystany w zadaniu.

0

Aha no właśnie ma wypisać ilość tych liczb a nie kolejne liczby. sorki.

A jak mam wczytac kolejne liczby przy użyciu pętli while?

I jak zapisywać do tych zmiennych po sprawdzeniu warunku?

0

to bedzie cos takiego:

int ilosc;
cin >> ilosc;
int n = ilosc;
int nieparzystych = 0;
while (n--)
  {
    int a;
    cin >> a;
    nieparzystych+=a&1;
  }
cout << "parzystych: " << ilosc-nieparzystych << "\nnieparzystych: " << nieparzystych << "\n";
0

Oki a objaśnij jeśli możesz :D twój tok rozumowania xd

Chodzi mi o linijke:

nieparzystych+=a&1;

1

a&1 to ostatni bit liczby a,
po zapisaniu liczby w postaci binarnej, np. 5, wykonujemy na nim operację AND bitowo z liczbą 1:

101
001
---
001

liczby parzyste posiadają liczbę 0 na końcu, a liczby nieparzyste 1 w zapisie binarnym.

zatem dla liczb 1,2,3,4,5:

1&1 = 1
2&1 = 0
3&1 = 1
4&1 = 0
5&1 = 1
-------
======3

masz 3 liczby nieparzyste

0
Odyn napisał(a)

Oki a objaśnij jeśli możesz :D twój tok rozumowania xd

Chodzi mi o linijke:

nieparzystych+=a&1;

to może ja.
operator "&" to bitowy iloczyn (AND). poczytaj http://pl.wikipedia.org/wiki/Maska_bitowa

wyrażenie:

bool b = a & 1 ;

sprawdza, czy bit na pozycji 0 (bo 1<<0==1, 2^0=1) w zmiennej a jest ustawiony na 1. jakbyś chciał sprawdzić 3 bit, to musiałbyś zrobić:

bool b = a & 8; //bo 1<<3 == 8, 2^3=8)

jak to ma się do parzystości? a sprawdź po kolei liczby naturalne z zerem:

 a |    a_bin | a&1
 0 | 00000000 | 0
 1 | 00000001 | 1
 2 | 00000010 | 0
 3 | 00000011 | 1
 4 | 00000100 | 0
 5 | 00000101 | 1
(...)

rozumiesz? ;)

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