• 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
286 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 282 wizyt
pytanie zadane 11 marca 2018 w PHP przez PolYGlok Pasjonat (19,450 p.)
0 głosów
1 odpowiedź 282 wizyt
pytanie zadane 3 kwietnia 2018 w C i C++ przez xLooks Początkujący (250 p.)
0 głosów
2 odpowiedzi 150 wizyt
pytanie zadane 20 września 2015 w C i C++ przez niezalogowany

92,761 zapytań

141,685 odpowiedzi

320,485 komentarzy

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

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!

...