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

[C++] Wykonywanie petli while z uzyciem zmiennych int. // MZ Odc. 3 Przyklad: Bakterie

Object Storage Arubacloud
0 głosów
268 wizyt
pytanie zadane 5 marca 2017 w C i C++ przez FathisUless Nowicjusz (190 p.)

Witam!
 

Jestem bardzo poczatkujacy i nie rozumiem pewnej kwestii w kodzie.
P. Miroslaw w odc. 3 C++ podal za przyklad mnozenie sie bakterii.
Kod u mnie jak najbardziej dziala jednak po kilku dniach nauki wrocilem do tego odcinka i postanowilem poeksperymentowac.

Wkleje kod oryginalny oraz pod nim kod zmodyfikowany.

#include <iostream>

using namespace std;

int populacja=1; int godzin=0;


int main()
{
    while(populacja<=1000000000)
    {
        godzin++;
        populacja = populacja *2;

        cout<<"Minelo godzin: "<<godzin;
        cout<<" liczba bakterii: "<<populacja<<endl;
    }


    return 0;
}
#include <iostream>

using namespace std;

int populacja=1; int godzin=0;


int main()
{
    while(populacja<=1000000000)
    {
        int a, b;
        a=godzin++;
        b=populacja *=2;

        cout<<"Minelo godzin: "<<a;
        cout<<" liczba bakterii: "<<b<<endl;
    }


    return 0;
}

W moim kodzie dodalem sobie dwie zmienne "a" i "b" do ktorych odnosze sie w coutach. Program nadal dziala jednak w kodzie oryginalnym ilosc godzin po osiagnieciu 1000000000 bakterii wynosi 30 a w moim kodzie 29.

W oryginale pierwszy cout daje w konsoli wartosc 1 dla godzin oraz wartosc 2 dla populacji. Czyli OK.
W moim kodzie cout zaczyna od godzin 0 populacja 2 a potem petla wykonuje sie tak jak powinna jednak z bledem. populacja sie zgadza, godziny nie.

Zapisalem rowniez godzin+++1 - zadzialalo.
Oraz godzin=godzin+1 - rowniez dziala. 

Skoro godzin=godzin+1 to to samo co godzin++ to dlaczego w drugim rodzaju zapisu nie dziala?

Pozdrawiam,
Fathis

 

1
komentarz 5 marca 2017 przez 10kw10 Pasjonat (22,880 p.)

Post i pre inkrementacja

Chyba o to chodzi

komentarz 5 marca 2017 przez FathisUless Nowicjusz (190 p.)
Swietnie! Dziekuje za odpowiedz, dokladnie o to chodzilo.

1 odpowiedź

+1 głos
odpowiedź 5 marca 2017 przez Barus Stary wyjadacz (14,120 p.)
wybrane 5 marca 2017 przez FathisUless
 
Najlepsza

Witaj.

Wystarczy, że w kodzie zmienisz na: 

a=++godzin;

Różnica między godzin++ a ++godzin jest taka, że godzin++ inkrementuje wartość tej zmiennej po przypisaniu do zmiennej a, natomiast ++godzin przed. Tak więc

a=++godzin // najpierw inkrementuje zmienną godzin, a potem przypisuje ja do zmiennej a

a=godzin++ //przypisuje obecna wartosc zmiennej a dopiero potem ja inkrementuje


Początkowa wartość zmiennej godzin to 0. w przypadku Twojego kodu (czyli zapis a=godzin++) do zmiennej a zostaje przypisana wartość 0 (ponieważ tak jak wspomniałem wcześniej najpierw jest przypisywana obecna wartość, a dopiero potem zmienna jest inkrementowana). Wystarczy więc zmienić na zapis a=++godzin i wtedy do zmiennej a zostanie wpisana wartość 1 (ponieważ najpierw zostanie zinkrementowana zmienna godzin i dopiero potem wpisana do zmiennej a). 

Pozdrawiam!

 

komentarz 5 marca 2017 przez FathisUless Nowicjusz (190 p.)
Mega wyjasnienie :) Dziekuje bardzo!

Podobne pytania

0 głosów
0 odpowiedzi 278 wizyt
pytanie zadane 11 marca 2018 w PHP przez PolYGlok Pasjonat (19,450 p.)
0 głosów
1 odpowiedź 272 wizyt
pytanie zadane 3 kwietnia 2018 w C i C++ przez xLooks Początkujący (250 p.)
0 głosów
2 odpowiedzi 141 wizyt
pytanie zadane 20 września 2015 w C i C++ przez niezalogowany

92,596 zapytań

141,446 odpowiedzi

319,720 komentarzy

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

...