Witam,
Mam mały problem z C++. Dzisiaj na lekcji informatyki miałem napisać prosty program, który sprawdzi czy liczba podana przez użytkownika jest równa 0. Dla zera miał wypisać TAK, a dla każdej innej liczby NIE. Napisałem taki program:
#include <iostream>
using namespace std;
int main()
{
int Liczba;
cin >> Liczba;
if(Liczba)
{
cout << "NIE";
}
else
{
cout << "TAK";
}
return 0;
}
Niby ten program dobrze działa, ponieważ dla if(Liczba) zawsze zwróci false jeżeli zmienna Liczba jest zerem, a dla każdej innej liczby zwróci true. Okazało się, że to zadanie nie zostało mi zaliczone, ponieważ jeżeli się poda programowi tak dużą liczbę, że zmienna się przeciąży to dla jakiejś innej dużej liczby, która niekoniecznie jest zerem wypisze TAK. Dobry program to:
#include <iostream>
using namespace std;
int main()
{
int Liczba;
cout << " Podaj liczbe: ";
cin >> Liczba;
if (Liczba == 0 )
{
cout <<"TAK" ;
}
else
{
cout << "NIE";
}
return 0;
}
Ten program różni się jedynie warunkiem w ifie. Jak to się dzieje, że ten drugi program jest odporny na przeciążenie zmiennej?