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

dziwna sytuacja ze zmienną c++

Object Storage Arubacloud
0 głosów
191 wizyt
pytanie zadane 8 lutego 2017 w C i C++ przez Koper Początkujący (310 p.)

Witam!
Mam dziwny problem, gdy dodaję sobie nową zmienną i przypisuję do niej wartość to cały mój program sypie się i pokazuje 0. Mógłby mi ktoś wyjaśnij dlaczego? :)
Dopiero zmiana z int na double pomogła.
tutaj link do filmiku:
https://www.dropbox.com/s/45pixr7xdt6o0f2/VID_20170207_235447.mp4?dl=0

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    int liczba;
    int calosc;

    vector <int> tab;

    tab.push_back(0);
    tab.push_back(1);

    for(int i=2; liczba<3000000; i++)
    {
        liczba=tab[i-1]+tab[i-2];
        tab.push_back(liczba);
    }

    for(int i=0; i<tab.size(); i++)
    {
        if(tab[i]%2==0)
        {
            cout<<tab[i]<<endl;

        }
    }
}

 

komentarz 8 lutego 2017 przez morele123 Gaduła (4,790 p.)
Mi działa poprawnie :) Na ideone też :)
komentarz 8 lutego 2017 przez Koper Początkujący (310 p.)
Przestaje działać jak się do zmiennej calosc przypisze wartość 0; int calosc=0;
komentarz 8 lutego 2017 przez morele123 Gaduła (4,790 p.)
Nie przestaje :) Sprawdziłem na ideone też :)

1 odpowiedź

+1 głos
odpowiedź 8 lutego 2017 przez Knayder Nałogowiec (37,640 p.)
wybrane 8 lutego 2017
 
Najlepsza
Początkowa wartość zmiennej liczba to jakieś śmieci, które mogą być większe lub równe 3000000.
komentarz 8 lutego 2017 przez Koper Początkujący (310 p.)
Faktycznie, jak ustawię liczba=0 to już działa normalnie. Czyli tak jakby zmienna liczba ma jakiś wpływ na zmienną całość? Nie do końca to rozumiem.
komentarz 8 lutego 2017 przez Knayder Nałogowiec (37,640 p.)
W kodzie nigdzie nie użyleś zmiennej calosc.
komentarz 8 lutego 2017 przez Koper Początkujący (310 p.)
To jest nieważne. Wystarczy tylko, że do zmiennej całość dopiszę int calosc=0; i odpalam to, natychmiast na ekranie pojawia mi się 0. A gdy, calosc zostaje bez przypisanej wartości (int calosc) to normalnie mój algorytm chodzi i wypisuje mi to czego potrzebuję. Chciałem zmienną całość wykorzystać do sumowania ale zerowała mi na program.
komentarz 8 lutego 2017 przez Knayder Nałogowiec (37,640 p.)
Dziwna jest ta sytuacja. Po prostu nadawaj wartości początkowe, jeżeli program tego wymaga. Nigdy nie pracuj na zmiennych których wartości nie znasz.
komentarz 8 lutego 2017 przez Patrycjerz Mędrzec (192,320 p.)
Koper, takie zachowanie jest zwykłym undefined behavior i twój program powinien być od takich rzeczy wolny, gdyż jest to błąd w sztuce programistycznej. Jak napisał Knayder, używaj zmiennych dopiero, gdy znasz ich wartość. Napomnę tylko, że zmienne lokalne zawierają śmieci po deklaracji, zaś zmienne globalne/statyczne już są zainicjowane zerem.
komentarz 8 lutego 2017 przez Koper Początkujący (310 p.)
Ok, dziękuję bardzo za pomoc. Z problemem sobie poradziłem i zadanie dało mi prawidłowy wynik. A wasze rady zapamiętam :)

Pozdrawiam!

Podobne pytania

–3 głosów
3 odpowiedzi 299 wizyt
pytanie zadane 29 września 2015 w C i C++ przez Nicku Nowicjusz (120 p.)
+1 głos
1 odpowiedź 425 wizyt
pytanie zadane 15 grudnia 2017 w C i C++ przez Dudekdude Początkujący (320 p.)
0 głosów
1 odpowiedź 252 wizyt
pytanie zadane 16 grudnia 2015 w C i C++ przez dzidziamocarz Początkujący (370 p.)

92,615 zapytań

141,465 odpowiedzi

319,782 komentarzy

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

...