• 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++

Cloud VPS
0 głosów
13,924 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,570 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,440 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,300 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 6,171 wizyt
0 głosów
3 odpowiedzi 5,279 wizyt
pytanie zadane 28 grudnia 2016 w C i C++ przez szejmys Nowicjusz (160 p.)
0 głosów
3 odpowiedzi 3,146 wizyt
pytanie zadane 29 października 2017 w C i C++ przez st3pa Nowicjusz (150 p.)

93,467 zapytań

142,460 odpowiedzi

322,734 komentarzy

62,847 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

Kursy INF.02 i INF.03
...