Wszystko zmierza ku temu, że nie inicjalizujesz zmiennych.
Do zmiennej
x
kompilator wstawi tzw. "śmieć", wartość losową. O co mi chodzi?
#include <iostream>
int main()
{
int var;
std::cout << var << std::endl;
}
Po skompilowaniu tego kodu na ekranie konsoli zobaczyłem liczbę
-858993460
- to jest ten tzw. "śmieć", wartość losowa.
Na marginesie:
Kompilator
Microsoft Visual C++ 2010 Express poinformował mnie nawet, że ta zmienna jest niezainicjalizowana:
1>...\visual studio 2010 projects\4931\4931\main.cpp(6): warning C4700: uninitialized local variable 'var' used
Troskliwy nie?
W C++ wszystko co jest różne od 0 (zera) jest prawdą.
#include <iostream>
int main()
{
bool var;
std::cout << std::boolalpha << var << std::endl;
std::cout << static_cast < int >( var ) << std::endl;
}
Po skompilowaniu tego przykładu na ekranie konsoli ujrzałem:
true
204
204
- jest to liczba jaką wstawił kompilator, losowa. Jest różna od zera, prawda? Więc zmienna
var
przyjmuje wartość
true
.
Wróćmy do warunku.
if(( !skax ) ||( x != liczba ) )
{
}
Nie podam Ci dokładniej liczby, ale prawdopodobieństwo, że kompilator wstawi do zmiennej
skax
wartość (zero) jest małe. Ten warunek (
!skax
) zatem, w większości przypadków będzie przybierał wartość
false
.
x != liczba
- jakie jest prawdopodobieństwo, że kompilator wstawi do zmiennej
x
akurat wylosowaną liczbę z przedziału <1 ; 10>? Ten warunek będzie przybierał (w większości przypadków) wartość
true
.
Program wejdzie do bloku tego warunku jeżeli przynajmniej jeden (z dwóch) warunków (
!skax
,
x != liczba
) będzie prawdziwy, czyli wszystko się zgadza.
Pytanie tylko, po co Ci ten warunek? Jakie on ma tutaj zastosowanie? W ciągu całego programu jest on sprawdzany tylko i wyłącznie jeden, jedyny raz. Potem następuje wejście do pętli. Jaki miałeś cel stosując go w tym miejscu?
bowiem "!skax" wylacza wszystkie nieprawdziwe wyniki |
Zgadza się. Wybacz, przeoczyłem to. Aczkolwiek można to zrobić inaczej - sprawdzając tylko raz.
Jeżeli chodzi o warunek w pętli
do {...} while
. Dlaczego chcesz zakończyć działanie programu, gdy zostanie podane złe wejście?
poeksperementuje z Panskimi wskazowkami, czekam na kolejne. |
Jaki ze mnie Pan ;) Bez przesady ;)