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

Rozwiązywanie zadań w C++ - pętle (niepoprawny wynik)

42 Warsaw Coding Academy
0 głosów
296 wizyt
pytanie zadane 14 stycznia 2024 w C i C++ przez Railah Nowicjusz (120 p.)

Cześć, zaczynam uczyć się języka C++ i ćwicząc na znalezionych w internecie przykładowych zadaniach natknęłam się na problem, który nie jestem w stanie rozwiązać ani sama, ani z pomocą chatuGPT

Napisz program obliczający sumę liczb nieparzystych z przedziału <x,y>. Wartości x i y podaje użytkownik.

Otóż dostaję złe wyniki, jeśli w zakresie pojawiają się liczby ujemne. Np. podając x=-5 i y=0 to zamiast uzyskać wynik -9 dostaję 0. Próbowałam napisać kod zarówno przy użyciu pętli for jak i do while, jednak wynik w obu przypadkach jest niepoprawny. Co może być tego przyczyną i jak temu zaradzić? Z góry dziękuję za pomoc

#include <iostream>
using namespace std;

int x, y, suma=0;

int main() {
    cout<<"Podaj zakres liczb <x,y>\n";
    cin>>x>>y;
    do {
        if (x%2==1) suma+=x;
        x++;
    } while (x<=y);
    cout<<"Suma liczb nieparzystych z tego zakresu wynosi "<<suma;
    return 0;
}
#include <iostream>
using namespace std;

int x, y, suma=0;

int main() {
    cout<<"Podaj zakres liczb <x,y>\n";
    cin>>x>>y;
    for (x;x<=y;x++) {
        if (x%2==1) suma+=x;
    }
    cout<<"Suma liczb nieparzystych z tego zakresu wynosi "<<suma;
    return 0;
}

 

1 odpowiedź

+2 głosów
odpowiedź 14 stycznia 2024 przez adrian17 Mentor (353,600 p.)
Jest tak dlatego, że w C++ie %2 dla liczb ujemnych da ujemny wynik (-1).

Najprościej będzie, jeśli zamiast sprawdzać czy modulo jest == 1, sprawdzaj czy jest != 0.

(btw, zmienne `int x, y, suma=0;` nie muszą być globalne.)
komentarz 14 stycznia 2024 przez Railah Nowicjusz (120 p.)
Dziękuję za pomoc i wskazówkę. Teraz wszystko działa jak należy

Podobne pytania

+1 głos
0 odpowiedzi 566 wizyt
pytanie zadane 1 sierpnia 2022 w C i C++ przez Kuba Kaleta Nowicjusz (230 p.)
+2 głosów
3 odpowiedzi 1,270 wizyt
0 głosów
2 odpowiedzi 422 wizyt
pytanie zadane 16 grudnia 2018 w C i C++ przez kewin_kotowski Nowicjusz (120 p.)

93,395 zapytań

142,388 odpowiedzi

322,566 komentarzy

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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...