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

Podstawy C++, Alex Allain

VPS Starter Arubacloud
0 głosów
547 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ź 537 wizyt
0 głosów
0 odpowiedzi 412 wizyt
+1 głos
3 odpowiedzi 2,247 wizyt
pytanie zadane 29 sierpnia 2016 w C i C++ przez FatDeiv Początkujący (300 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...