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

Podstawy C++, Alex Allain

Object Storage Arubacloud
0 głosów
611 wizyt
pytanie zadane 18 listopada 2017 w C i C++ przez Moonika Nowicjusz (120 p.)

Witam wszystkich! 

To moja pierwsza w życiu wypowiedź na forum, dlatego trochę się stresuję :) Ale do rzeczy: szukam swojej pasji i myślę: może to programowanie? Dlatego zaczęłam się uczyć. Właśnie pracuję nad rozwiązaniem  zadania z książki Alexa Allain`a:  Napisz program obliczający sumę narastającą liczb wprowadzanych przez użytkownika , który zakończy swoje działanie, gdy użytkownik wprowadzi 0. Czytałam już o tym zadaniu na forum i mój kod wygląda następująco: 



#include <iostream>
#include <cstdlib>
#include <windows.h>

using namespace std;

int main()
{
    int liczba, suma=0;

    while(liczba!=0)
    {
        cout << "Podaj liczbe: ";
        cin>>liczba;
        suma+=liczba;
        cout<<"Suma = "<<suma<<endl;
        Sleep(500);
        system("cls");
    }
    cout<<"Ups.";
   return 0;
}

Zastanawiam się bardzo i nie umiem tego rozwikłać: dlaczego pomimo wpisania wartości 0 wciąż na ekranie pojawia się tekst: "Suma = ..."? Wydaje mi się, że nie powinien, skoro polecenie pisania na ekranie zawarte jest  w pętli, której warunek powtarzalności właśnie nie został spełniony. Proszę o dwa słowa wyjaśnienia/korekty :) Pozdrawiam!

2 odpowiedzi

+1 głos
odpowiedź 18 listopada 2017 przez Aisekai Nałogowiec (42,190 p.)
edycja 18 listopada 2017 przez Aisekai
Chodzi o to, że zmienna liczba, nie miała jeszcze przypisanej wartości (pewnie jej wartość to jakieś "śmieci" z pamięci). Więc cały kod zawarty w pętli został wykonany.  A jako, że w pętli masz polecenie wypisania sumy na ekran - została ona wypisana. Jeżeli jako pierwszą liczbę, podałaś 0, to i tak Ci się wykona pętla jeden raz, ale nie wykona  się już następnym razem.

EDIT: Głównie chodzi o to, że jeżeli warunek został spełniony, to wtedy wykonuje się cały kod zawarty w pętli (jeżeli nie spotka gdzieś jakiegoś breaka, continue, czy czegoś takiego).  To nie działa tak, że jeżeli wprowadzisz do zmiennej liczba wartość 0 to od razu Ci wyjdzie z pętli.
Najpierw zostaje sprawdzony warunek, potem zostaje wykonany kod i to zostaje zapętlone do czasu, aż warunek nie da wartości fałsz.
komentarz 18 listopada 2017 przez Moonika Nowicjusz (120 p.)
Ach tak...! Teraz już rozumiem, wielkie dzięki :)
0 głosów
odpowiedź 19 listopada 2017 przez Emil Kob Bywalec (2,640 p.)
Warunek pętli sprawdzany jest gdy kod zawarty w pętli zostanie wykonany do końca.

Podobne pytania

0 głosów
1 odpowiedź 548 wizyt
0 głosów
0 odpowiedzi 415 wizyt
+1 głos
3 odpowiedzi 2,279 wizyt
pytanie zadane 29 sierpnia 2016 w C i C++ przez FatDeiv Początkujący (300 p.)

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

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

...