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

Wyświetlanie zbiorów liczb parzystych i nieparzystych z podanych - C++

Object Storage Arubacloud
0 głosów
13,445 wizyt
pytanie zadane 30 listopada 2017 w C i C++ przez Dawid_Predecki Obywatel (1,610 p.)

Witam!

Mam pewien mały problem, otóż w szkole dostaliśmy zadanie, żeby napisać program który zapyta użytkownika ile liczb chce wczytać, po czym wczyta te liczby, a następnie wyświetli dwa zbiory - liczb parzystych i nieparzystych. W szkole nie udało mi się tego zrobić i ogarnąłem to w domu (poniżej kod). Sam program działa dobrze tylko przy wyświetlaniu zbiorów parzystych i nieparzystych, wyświetla to tak: 020406 - dla parzystych i 103050 - dla nieparzystych. Wygląda to tak jakby program zamieniał w zbiorze liczb parzystych liczby nieparzyste na zera i w zbiorze nieparzystych, liczby parzyste na zera. Moje pytanie brzmi co należy dopisać/zmienić w kodzie aby tych zer nie było? Będę wdzięczny za jakąkolwiek pomoc.

Pozdrawiam! 

#include <iostream>

using namespace std;

int x;
int liczba;
int parzyste[50];
int nieparzyste[50];

int main()
{
    cout << "Ile liczb chcesz wczytac? ";
    cin >> x;
    for(int i=0; i<x; i++)
    {
        cout << "Podaj " << i + 1 << " liczbe: ";
        cin >> liczba;
        if(liczba%2==0)
            parzyste[i]=liczba;
        else if(liczba%2!=0)
            nieparzyste[i]=liczba;
    }

    cout << endl;
    cout << "Liczby parzyste" << endl;
    cout << "===============" << endl;

    for(int i=0; i<x; i++)
    {
        cout << parzyste[i] << endl;
    }

    cout << endl;
    cout << "Liczby nieparzyste" << endl;
    cout << "==================" << endl;

    for(int i=0; i<x; i++)
    {
        cout << nieparzyste[i] << endl;
    }
    return 0;
}

 

5 odpowiedzi

+1 głos
odpowiedź 1 grudnia 2017 przez criss Mędrzec (172,590 p.)

Załóżmy, że podajesz 50. W takim razie wczytujesz 50 liczb, dzielisz je na dwa zbiory i oczekujesz, że będzie ich 100. Tak to przynajmniej wygląda. W pętli wpisujesz kolejne liczby pod indeks i do jednej z dwóch tablic. Więc w tej drugiej tablicy indeks i pozostaje niezagospodarowany. Pozostaje tam zero, bo zmienne globalne są domyślnie inicjalizowane do zera. Wprowadź jakieś zmienne będące licznikami liczb parzystych/nieparzystych.

+1 głos
odpowiedź 1 grudnia 2017 przez seba2471 Nowicjusz (160 p.)
zrób jeszcze jedną tablicę i przypisz wszystkie pobrane liczby od użytkownika do tamtej tablicy i wtedy jeszcze jeden for i dziel na parzyste i nie parzyste.
+1 głos
odpowiedź 1 grudnia 2017 przez Marek Smętek 1 Nowicjusz (220 p.)
//A może tak?

#include <iostream>
 
using namespace std;
 
int x;
int nr1=0; 
int nr2=0;
int liczba;
int parzyste[50];
int nieparzyste[50];
 
int main()
{
    cout << "Ile liczb chcesz wczytac? ";
    cin >> x;
    for(int i=1; i<=x; i++)
    {
        cout << "Podaj " << i  << " liczbe: ";
        cin >> liczba;
        if(liczba%2==0)
        {
        nr2++;
        parzyste[nr2]=liczba;
    	}
        else 
		{
		if(liczba%2==1)
        nr1++;
        nieparzyste[nr1]=liczba;
        }
    }
 
    cout << endl;
    cout << "Liczby parzyste" << endl;
    cout << "===============" << endl;
 
    for(int i=1; i<=nr2; i++)
    {
        cout <<i<<" /   "<< parzyste[i] << endl;
    }
 
    cout << endl;
    cout << "Liczby nieparzyste" << endl;
    cout << "==================" << endl;
 
    for(int i=1; i<=nr1; i++)
    {
        cout << i<<" /   "<<nieparzyste[i] << endl;
    }
    return 0;
}

 

+1 głos
odpowiedź 1 grudnia 2017 przez Bondrusiek Maniak (61,370 p.)

Witam,

wydaje mi się że Twoim głównym problemem jest indeksowanie tablic

W int main(){

    int ile_nieparszystych=0;//
    int ile_parzystych = 0;//stworzenie dwoch zmiennych do indeksowania tablic
    cout << "Ile liczb chcesz wczytac? ";
    cin >> x;
    for(int i=0; i<x; i++)
    {
        cout << "Podaj " << i + 1 << " liczbe: ";
        cin >> liczba;
        if((liczba%2)==0)//proponuje używać () do operatora modulo
            parzyste[ile_parzystych++]=liczba; //ile_parzystych wzrasta po użyciu 
        else if((liczba%2)!=0)
            nieparzyste[ile_nieparszystych++]=liczba;
    }

    cout << endl;
    cout << "Liczby parzyste" << endl;
    cout << "===============" << endl;

    for(int i=0; i<ile_parzystych; i++)//analogicznie z ile_nieparzystych
    {
        cout << parzyste[i] << endl;
    }

 

0 głosów
odpowiedź 1 grudnia 2017 przez obl Maniak (51,280 p.)
Ile chcesz liczb wczytać?

A ciekawe co będzie jak sobie wpiszę 51 i wszystkie będą parzyste :)

Podobne pytania

0 głosów
2 odpowiedzi 5,603 wizyt
0 głosów
3 odpowiedzi 4,836 wizyt
pytanie zadane 28 grudnia 2016 w C i C++ przez szejmys Nowicjusz (160 p.)
0 głosów
3 odpowiedzi 2,796 wizyt
pytanie zadane 29 października 2017 w C i C++ przez st3pa Nowicjusz (150 p.)

92,576 zapytań

141,426 odpowiedzi

319,650 komentarzy

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

...