[POCZĄTKUJĄCY] Suma liczb z przedziału

0

Hej - ktoś mi wytłumaczy dlaczego to nie działa? Komputer wypluwa sume liczb parzystych równą 0. Zerknąłem na przykładowe zadanie na innych forach i wyglada to bliźniaczo podobnie.

#include <iostream>

using namespace std;

int i,numer=0,liczba1,liczba2,suma;

int main()
{
    cout << "Podaj od ktorej liczby chcesz wyswietlac: ";
    cin >> liczba1;
    cout << "Podaj do ktorej liczby chcesz wyswietlac: ";
    cin >> liczba2;
for (int i=liczba1;i<=liczba2;i++)
    {
      numer++;

     cout <<numer<<". "<< i<<endl;
    }

    if (i%2==0)

           suma=suma+i;

        cout <<"Suma liczb parzystych jest rowna "<< suma<<endl;

    return 0;
}
1

Usuń globalną zmienną i (i przy okazji uczyń pozostałe zmienne globalne lokalnymi, nie ma powodu żeby takowymi pozostały) – robi tylko zamieszanie. Ponadto instrukcja warunkowa znajduje się poza pętlą, więc nie sprawdza liczb, które w czasie pętli są wypisywane:

for (int i = liczba1; i <= liczba2; i++)
{
    numer++;
    cout << numer << ". " << i <<endl;
    if (i % 2 == 0)
    {
        suma += i;
    }
}

Możesz wykorzystać operator += jako ekwiwalent Twojego wyrażenia suma + i.

Pamiętaj także o tym, że w przypadku gdy użytkownik poda najpierw liczbę większą, pętla nie zostanie wykonana, co prawdopodobnie pozbawi go dalszej właściwej interakcji.

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