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

Object Storage Arubacloud
0 głosów
71 wizyt
pytanie zadane 14 stycznia 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 przez adrian17 Ekspert (344,860 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 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 265 wizyt
pytanie zadane 1 sierpnia 2022 w C i C++ przez Kuba Kaleta Nowicjusz (230 p.)
+2 głosów
3 odpowiedzi 1,181 wizyt
0 głosów
2 odpowiedzi 250 wizyt
pytanie zadane 16 grudnia 2018 w C i C++ przez kewin_kotowski Nowicjusz (120 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

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

...