Suma liczb parzystych/nieparzystych z vectora c++

0

Hej wszystki, chciałbym prosić o pomoc w zadanku(i poprawę kodu jeśli robiłem do tej pory coś źle). Zadanie polega na tym abym wyświetlił elementy wektora podstawowego, liczby parzyste i nieparzyste. Następnie wylosował liczby do wektora, z którego później mam wyświetlić sumę liczb parzystych,nieparzystych i wszystkich liczb w wektorze(z tym mam problem). To jest dotychczasowy kod jaki udało mi się wykonać:

#include <iostream>
#include <vector>
#include <ctime>

using namespace std;

int main()
{
    vector<int>liczby;

    srand((int)time(NULL));
    int wylosowana = 0;
    for(int i = 0; i < 50; i ++)
    {
        wylosowana = rand() % 100+1;
        liczby.push_back(wylosowana);
    }
    cout << "Podstawowe elementy" << endl;
    for(int i=0; i<liczby.size();i++)
    {
        cout << liczby[i] << ",";
    }
    cout << "\n" << "Liczby parzyste" << endl;
    for(int i=0; i<liczby.size();i++)
        {
            if(liczby[i]% 2==0)
                    cout << liczby[i] << ",";
        }
    cout << "\n" << "Liczby nieparzyste"<< endl;
    for(int i=0; i<liczby.size();i++)
        {
            if(liczby[i] % 2)
                    cout << liczby[i] << ",";
        }
}
0

Co to jest wektor podstawowy?

Jeśli chodzi o sumy, utwórz sobie odpowiednie zmienne i do nich dodawaj wartości elementów parzystych i nieparzystych odpowiednio.

Potem wystarczy wyświetlić te zmienne i ich sumę.

PS:

0

A wszystko inne jest git? W sensie cały kod wyświetlania nie jest jakoś topornie zrobiony?

1

Wyświetlanie jest ok. Mógłbyś próbować być bardziej fancy, np. używając copy_if i stream iteratorów, ale Twój obecny zapis jest poprawny i zrozumiały dla każdego. Ewentualnie poprawiłbym zwykłego fora na ranged fora.

    for(int i=0; i<liczby.size();i++)
    {
        cout << liczby[i] << ",";
    }

na

    for(int liczba : liczby)
    {
        cout << liczba << ",";
    }

Losowanie przeczytaj, ale to nie jest palący problem w tym zadaniu, szczególnie jeśli było narzucone.

0

@kq: chcialbyś mi pomóc trochęz tą sumą bo coś chyba popsułem

if(liczby[i]%2==0)
           suma=suma+liczby[i];
           cout << suma;

suma jest ustawiona jako 0 i po wyswietleniu sumy wyswietla ciag znakow. Jakby to mozna zmienic zeby dzialalo odpowiednio?

1

Użyj klamer.

0

okey, nevermind. Sumuje liczby, lecz sumuje np 1+3, 3+5 itd. a jak zrobic zeby podalo jedna ostateczna sume?

0

Pokaż kod.

0
#include <iostream>
#include <vector>
#include <ctime>

using namespace std;

int main()
{
    vector<int>liczby;
    int suma=0;

    srand((int)time(NULL));
    int wylosowana = 0;
    for(int i = 0; i < 50; i ++)
    {
        wylosowana = rand() % 100+1;
        liczby.push_back(wylosowana);
    }
    cout << "Wylosowane liczby" << endl;
    for(int liczba : liczby)
    {
        cout << liczba << ",";
    }
    cout << "\n" << "Liczby parzyste" << endl;
    for(int i=0; i<liczby.size();i++)
        {
            if(liczby[i]% 2==0)
                    cout << liczby[i] << ",";
        }
    cout << "\n" << "Liczby nieparzyste"<< endl;
    for(int i=0; i<liczby.size();i++)
        {
            if(liczby[i] % 2)
                    cout << liczby[i] << ",";
        }
    cout << "\n" << "Suma Liczby nieparzyste"<< endl;
    for(int i=0; i<liczby.size();i++)
    {
        if(liczby[i]%2)
            {
                suma=suma+liczby[i];
                cout << suma << endl;
            }

    }
}

0

Nie wypisuj w pętli, tylko po jej zakończeniu. I utwórz sobie osobne zmienne do sumy parzystych i nieparzystych

0

Czyli w jakim momencie ma byc ten if (jakbys mogl pokazac) i czy potrzebuje wtedy zmienic warunek w if'ie?

0

warunek jest dobry. To co w nim wykonujesz jest złe. Masz dodać nieparzyste, ale wypisać dopiero sumę, a nie wszystkie sumy częściowe

0

Dziękuje wszystkim za pomoc!

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