Ten dokument został pobrany ze strony
http://it.hk.pl/
Lekcja 20 : Typ logiczny i wyliczeniowy
Wprowadzenie
Znasz ju
ż
podstawowe typy danych i operatory. W ostatnim czasie przedstawiłem Ci tablice, p
ę
tle
i wiele ró
ż
nych przydatnych instrukcji. W tej lekcji poznasz 2 kolejne typy danych, z czego jeden jest
bardzo wa
ż
ny i u
ż
ywasz go nie
ś
wiadomie niemal przez cały czas trwania tego kursu.
Typ logiczny
Typ logiczny jest tak naprawd
ę
jednym z najprostszych typów j
ę
zyka C++. Zmienna typu
logicznego mo
ż
e bowiem przyjmowa
ć
tylko dwie warto
ś
ci: prawd
ę
albo fałsz.
Typ logiczny w C++ to:
bool - typ logiczny (przyjmuje tylko 2 warto
ś
ci: true lub false)
Typ logiczny jest w rzeczywisto
ś
ci bardzo cz
ę
sto wykorzystywany, nawet je
ś
li nie u
ż
ywali
ś
my do
tej pory zmiennej typu bool. Tak naprawd
ę
w ka
ż
dym wyra
ż
eniu logicznym, kiedy mamy operatory
&& lub || oraz kiedy u
ż
ywamy instrukcji warunkowej lub operatora warunkowego, tam tak naprawd
ę
jest wykorzystywany typ logiczny.
Zacznijmy jednak od pocz
ą
tku. Oto prosty przykład, w którym tworzymy zmienn
ą
typu bool
i wypisujemy jej warto
ść
na ekran.
#include<iostream>
using namespace
std
;
int
main
()
{
bool
logiczny
;
logiczny
=true;
cout
<<
"Zmienna logiczny ma wartosc "
<<
logiczny
<<
'\n'
;
logiczny
=false;
cout
<<
"Zmienna logiczny ma teraz wartosc "
<<
logiczny
<<
'\n'
;
logiczny
=2;
cout
<<
"Zmienna logiczny ma teraz wartosc "
<<
logiczny
<<
'\n'
;
cout
<<
"\nNacisnij ENTER aby zakonczyc...\n"
;
getchar
();
return
0
;
}
Autor: Marcin Nabiałek Kontakt e-mail:
it-developer@wp.pl
Dokument jest chroniony prawem autorskim © 2004
Ten dokument został pobrany ze strony
http://it.hk.pl/
W przykładowym programie mo
ż
na tak naprawd
ę
dostrzec wiele wydawałoby si
ę
dziwnych rzeczy.
Przede wszystkim, kiedy zmienna ma warto
ść
true, na ekran zostaje wypisane 1, a kiedy zmienna ma
warto
ść
false na ekran zostaje wypisane 0.
Faktycznie - tak zostało przyj
ę
te w j
ę
zyku C++, jednak w rzeczywisto
ś
ci to nie b
ę
dzie miało dla
Ciebie
ż
adnego znaczenia. Tak naprawd
ę
poza celami poznawczymi, tak jak tutaj, nikt nie wypisuje
warto
ś
ci zmiennej typu logicznego na ekran, bo nie jest to tak naprawd
ę
w
ż
aden sposób
uzasadnione.
Dziwniejsz
ą
spraw
ą
jest to,
ż
e zmiennej zostaje przypisana warto
ść
liczbowa 2, mimo
ż
e
wspominałem,
ż
e zmienna typu logicznego mo
ż
e przyjmowa
ć
tylko dwie warto
ś
ci: false albo true.
Rzeczywi
ś
cie tak wła
ś
nie jest, jednak dokonuj
ą
c przypisania jakiejkolwiek warto
ś
ci niezerowej do
zmiennej logicznej, zostaje ona potraktowana jako prawda, czyli true (Tylko 0 jest traktowane jako
fałsz, czyli false).
Potwierdza to wynik po wypisaniu na ekran - zmienna nie ma bowiem warto
ś
ci 2, tylko 1, a 1 jak
ju
ż
wspomniałem przy wypisaniu warto
ś
ci zmiennej typu logicznego, oznacza po prostu true. Jak wi
ę
c
widzisz wszystko si
ę
zgadza.
Typ logiczny a instrukcje warunkowe
W rzeczywisto
ś
ci wsz
ę
dzie tam, gdzie s
ą
stosowane instrukcje warunkowe if, operatory
warunkowe, czy instrukcja switch, tam niejawnie jest stosowany typ logiczny.
Przykładowo, wyra
ż
enie 2<3 zwraca warto
ść
logiczn
ą
true, a wyra
ż
enie 5!=5 zwraca warto
ść
logiczn
ą
false. Wła
ś
nie tego typu wyra
ż
enia s
ą
stosowane we wspomnianych przeze mnie
konstrukcjach. Na dodatek, równie
ż
we wszystkich typach p
ę
tli jako warunki ko
ń
cowe pojawiaj
ą
si
ę
wyra
ż
enia, które w rzeczywisto
ś
ci zwracaj
ą
true lub false.
Mam nadziej
ę
,
ż
e tym sposobem przekonałem Ci
ę
,
ż
e typ logiczny jest bardzo powszechnie
stosowany w j
ę
zyku C++. Jest on zarazem bardzo prostym typem, wi
ę
c nie ma co dłu
ż
ej zastanawia
ć
si
ę
nad jego znaczeniem, tylko po prostu
ś
wiadomie go u
ż
ywa
ć
w swoich programach.
Je
ś
li spojrzysz na program znajduj
ą
cy si
ę
w lekcji
Instrukcja break
, to zwró
ć
uwag
ę
na zmienn
ą
end. To wła
ś
nie typowa zmienna typu logicznego, chocia
ż
wtedy u
ż
yli
ś
my typu unsigned int z
prostego powodu,
ż
e typ logiczny nie był Ci wtedy jeszcze znany.
Postaraj si
ę
teraz zmieni
ć
program tak, aby został u
ż
yty typ logiczny a działanie si
ę
nie zmieniło.
Zmie
ń
równie
ż
przypisania warto
ś
ci na warto
ś
ci typowe dla typu logicznego (true i false zamiast 1 i 0).
Typ wyliczeniowy - wprowadzenie
Wszystkie typy, które do tej pory udało Ci si
ę
pozna
ć
charakteryzowała jedna wspólna cecha - do
zmiennej tego typu mogli
ś
my przypisa
ć
wszystkie dopuszczalne warto
ś
ci dla danego typu. Dla
typu całkowitego mogli
ś
my przypisa
ć
dowoln
ą
liczb
ę
całkowit
ą
z pewnego zakresu, a do zmiennej
typu znakowego mogli
ś
my przypisa
ć
dowolny znak.
Oczywi
ś
cie takie podej
ś
cie mo
ż
e wydawa
ć
Ci si
ę
całkiem poprawne. Rzeczywi
ś
cie, w wielu
wypadkach jest to po
żą
dane, a wr
ę
cz idealne rozwi
ą
zanie. Co jednak, gdyby
ś
my chcieli ograniczy
ć
ten zbiór warto
ś
ci? Co gdyby
ś
my chcieli na przykład stworzy
ć
nowy typ, dla którego s
ą
dopuszczalne tylko 3 warto
ś
ci?
Autor: Marcin Nabiałek Kontakt e-mail:
it-developer@wp.pl
Dokument jest chroniony prawem autorskim © 2004
Ten dokument został pobrany ze strony
http://it.hk.pl/
Po pierwsze, takie podej
ś
cie mo
ż
e by
ć
uzasadnione. Powiedzmy,
ż
e chcemy na przykład napisa
ć
program o ró
ż
nych pojazdach i uznajemy,
ż
e w programie chcemy mie
ć
pojazdy nale
żą
ce do jednego
z trzech typów (np. bezsilnikowe, jednosilnikowe i wielosilnikowe). Nie chcemy mie
ć
mo
ż
liwo
ś
ci
przypisywania do typu pojazdu
ż
adnej innej warto
ś
ci.
Mo
ż
emy podej
ść
w ró
ż
ny sposób do problemu. Na przykład mo
ż
emy zało
ż
y
ć
,
ż
e b
ę
dziemy
zawsze pami
ę
ta
ć
,
ż
e nie wolno nam przypisa
ć
do pewnej zmiennej typu np. całkowitego innych
warto
ś
ci poza 0 (bezsilnikowe), 1 (jednosilnikowe) i 2(wielosilnikowe). Nie musz
ę
Ci
ę
chyba
zapewnia
ć
,
ż
e jest to podej
ś
cie zupełnie nie na miejscu, bowiem nawet Ty w ko
ń
cu zapomnisz, co
znaczy 0, co 1 a co 2 i w ko
ń
cu przypiszesz do zmiennej inn
ą
warto
ść
np. 3.
Troch
ę
innym podej
ś
ciem byłoby sprawdzanie za pomoc
ą
instrukcji warunkowej, czy przypisujemy
do zmiennej dopuszczaln
ą
warto
ść
, a je
ś
li nie, to podj
ę
cie pewnych
ś
rodków zaradczych. To
rozwi
ą
zanie oczywi
ś
cie jest nieco lepsze, jednak nadal nie byłoby tym czego oczekujemy.
Przede wszystkim musieliby
ś
my wsz
ę
dzie za pomoc
ą
instrukcji warunkowej sprawdza
ć
, czy
warto
ść
jest dopuszczalna dla naszego "nowego typu" - nie musz
ę
Ci
ę
przekonywa
ć
,
ż
e zaciemniłoby
to w znacznym stopniu kod Twojego programu.
Dodatkowo, nadal zmiennej przypisywaliby
ś
my zwykłe liczby typu 0, 1, 2, co przy pierwszym
spojrzeniu na kod Twojego programu, nie znaczy oczywi
ś
cie zupełnie nic. Nale
ż
ałoby stworzy
ć
gdzie
ś
na pocz
ą
tku programu komentarz,
ż
e 0 to pojazdy bezsilnikowe, 1 to pojazdy jednosilnikowe, a 2 to
pojazdy wielosilnikowe.
Tak naprawd
ę
za ka
ż
dym razem, kiedy Ty lub kto
ś
inny chciałby doda
ć
co
ś
do programu,
musiałby sobie ponownie przypomina
ć
co znaczy 0, co znaczy 1, a co znaczy 2.
Typ wyliczeniowy pozwoli Ci natomiast tworzy
ć
nowe typy danych i to bez wi
ę
kszego wysiłku.
Dodatkowo, cał
ą
odpowiedzialno
ść
za poprawno
ść
typu danych przerzucisz na kompilator!
Typ wyliczeniowy - podstawy
Wiesz ju
ż
w przybli
ż
eniu do czego słu
ż
y typ wyliczeniowy - za jego pomoc
ą
tworzysz typy danych,
dla których zmienne mog
ą
przyjmowa
ć
tylko pewn
ą
okre
ś
lon
ą
liczb
ę
warto
ś
ci. To kompilator a nie Ty
zatroszczy si
ę
, aby nie przypisa
ć
do zmiennej nowego typu
ż
adnej innej warto
ś
ci.
Schematycznie definicj
ę
typu wyliczeniowego zapisujemy tak:
enum
nazwaTypu
{
pierwszaWartosc
,
drugaWartosc
, ...,
ostatniaWartosc
};
Od razu zaznacz
ę
,
ż
e jest to uproszczona definicja typu, jednak w naszym przykładzie
dotycz
ą
cym pojazdów, taka definicja mogłaby w zupełno
ś
ci wystarczy
ć
.
nazwaTypu to wymy
ś
lona przez nas nazwa typu, a warto
ś
ci to nazwy dopuszczalnych warto
ś
ci
dla naszego typu, ale musz
ą
to by
ć
zwykłe nazwy - takie jak nazwy zmiennych. Niestety nie mo
ż
emy
tutaj napisa
ć
0, 1 czy 2, bowiem nie s
ą
to poprawne nazwy zmiennych (a w rzeczywisto
ś
ci poprawne
nazwy identyfikatorów).
Autor: Marcin Nabiałek Kontakt e-mail:
it-developer@wp.pl
Dokument jest chroniony prawem autorskim © 2004
Ten dokument został pobrany ze strony
http://it.hk.pl/
Poni
ż
ej przedstawiam przykładowy program z u
ż
yciem typu wyliczeniowego:
#include<iostream>
using namespace
std
;
int
main
()
{
// utworzenie typu
enum
typPojazdu
{
bezsilnikowe
,
jednosilnikowe
,
wielosilnikowe
};
// utworzenie zmiennej noweg typu
typPojazdu
mojPojazd
;
// lub enum typPojazdu mojPojazd;
mojPojazd
=
bezsilnikowe
;
// przypisanie wartosci zmiennej
if (
mojPojazd
==
bezsilnikowe
)
cout
<<
"Twoj pojazd nie ma silnika.\n"
;
else
cout
<<
"Twoj pojazd ma silnik.\n"
;
mojPojazd
=
wielosilnikowe
;
// przypisanie nowej wartosci zmiennej
if (
mojPojazd
==
jednosilnikowe
)
cout
<<
"A teraz Twoj pojazd ma tylko jeden silnik.\n"
;
else
cout
<<
"A teraz Twoj pojazd ma wiecej niz jeden silnik.\n"
;
cout
<<
"\nNacisnij ENTER aby zakonczyc...\n"
;
getchar
();
return
0
;
}
Jak widzisz, program jest całkiem prosty - na pocz
ą
tku tworzymy nasz typ wyliczeniowy o nazwie
typPojazduz trzema dopuszczalnymi warto
ś
ciami. Pó
ź
niej tworzymy zmienn
ą
naszego nowego typu
(zauwa
ż
,
ż
e w tym miejscu mo
ż
na, cho
ć
nie trzeba doda
ć
po raz drugi słowo enum).
Nast
ę
pnie, jak widzisz, dokonujemy przypisania warto
ś
ci do zmiennej. Spróbuj przypisa
ć
do
zmiennej jakiekolwiek inne warto
ś
ci (poza tymi trzema wymienionymi w definicji typu) i zobaczysz,
ż
e
kompilator zaprotestuje. Zauwa
ż
te
ż
,
ż
e wszystkie inne operacje s
ą
jak w przypadku zwykłego typu -
mo
ż
emy bez problemu dokonywa
ć
chocia
ż
by operacji porównania.
Typ wyliczeniowy a typ całkowity
Zacznijmy od przykładu - zmodyfikuj
ę
teraz nieco nasz pocz
ą
tkowy program, aby ukaza
ć
Ci
pewne zjawisko:
Autor: Marcin Nabiałek Kontakt e-mail:
it-developer@wp.pl
Dokument jest chroniony prawem autorskim © 2004
Ten dokument został pobrany ze strony
http://it.hk.pl/
#include<iostream>
using namespace
std
;
int
main
()
{
enum
typPojazdu
{
bezsilnikowe
, j
ednosilnikowe
,
wielosilnikowe
};
typPojazdu
mojPojazd
;
mojPojazd
=
bezsilnikowe
;
cout
<<
"Pojazd teraz to "
<<
mojPojazd
<<
'\n'
;
mojPojazd
=j
ednosilnikowe
;
cout
<<
"Pojazd teraz to "
<<
mojPojazd
<<
'\n'
;
mojPojazd
=
wielosilnikowe
;
cout
<<
"Pojazd teraz to "
<<
mojPojazd
<<
'\n'
;
cout
<<
"\nNacisnij ENTER aby zakonczyc...\n"
;
getchar
();
return
0
;
}
Jak widzisz, w programie usiłujemy wypisa
ć
warto
ść
naszej zmiennej i za ka
ż
dym razem
otrzymujemy liczby całkowite: 0, 1 i 2.
Od razu chc
ę
zaznaczy
ć
,
ż
e to zjawisko jest zupełnie inne ni
ż
zjawisko wyst
ę
puj
ą
ce w przypadku
typu logicznego. Tam równie
ż
, gdy chcieli
ś
my wypisa
ć
warto
ść
zmiennej logicznej, otrzymywali
ś
my
na ekranie warto
ś
ci liczbowe.
O ile jednak w tamtym wypadku tak zostało przyj
ę
te,
ż
e prawda zostanie wypisana jako 1, a fałsz
jako 0, to tutaj to nie jest
ż
adne przyj
ę
cie podczas wypisania - taka jest rzeczywista warto
ść
zmiennej!
Je
ś
li zastanawia Ci
ę
, dlaczego tak jest, to napisz
ę
krótko - typ wyliczeniowy jest w rzeczywisto
ś
ci
typem całkowitym! Zapami
ę
taj to sobie dobrze, bowiem wynika z tego kilka kwestii.
Teraz czas przedstawi
ć
pełny schematyczny sposób definicji typu wyliczeniowego. A wygl
ą
da on
nast
ę
puj
ą
co:
enum
nazwaTypu
{
nazwa1
=
wartosc1
,
nazwa2
=
wartosc2
, ...,
nazwaN
=
wartoscN}
;
Jak zatem mo
ż
esz si
ę
ju
ż
domy
ś
li
ć
, w poprzednim wypadku podali
ś
my jedynie nazwy
dopuszczalnych warto
ś
ci typu, a nie podali
ś
my ich rzeczywistych warto
ś
ci. Oznaczone tutaj wartosc1,
wartosc2 itd. to warto
ś
ci całkowite - zatem ka
ż
dej naszej warto
ś
ci typu w rzeczywisto
ś
ci odpowiada
pewna warto
ść
całkowita.
Zanim wyja
ś
ni
ę
Ci do czego mo
ż
e posłu
ż
y
ć
rzeczywista warto
ść
całkowita, postaram Ci si
ę
przybli
ż
y
ć
kilka reguł dotycz
ą
cych przypisywania warto
ś
ci w typie numerycznym.
Po pierwsze, nie musimy koniecznie okre
ś
la
ć
warto
ś
ci całkowitych (tak wła
ś
nie zrobili
ś
my w
pierwszym przykładzie), bowiem mo
ż
e to nam nie by
ć
do niczego potrzebne.
Warto
ś
ci przypisane poszczególnym warto
ś
ciom naszego typu mog
ą
by
ć
tylko całkowite -
niestety nie mo
ż
na przypisywa
ć
tam warto
ś
ci zmiennoprzecinkowych, a wszystko to dlatego,
ż
e typ
wyliczeniowy jest typem całkowitym (a nie na przykład typem float).
Autor: Marcin Nabiałek Kontakt e-mail:
it-developer@wp.pl
Dokument jest chroniony prawem autorskim © 2004
Ten dokument został pobrany ze strony
http://it.hk.pl/
Je
ś
li nie okre
ś
limy pocz
ą
tkowej warto
ś
ci całkowitej, to domy
ś
lnie wyliczanie zacznie si
ę
od 0.
Ka
ż
da nast
ę
pna warto
ść
b
ę
dzie o 1 wi
ę
ksza, o ile nie okre
ś
limy inaczej. Dlatego te
ż
je
ś
li nie
okre
ś
limy w ogóle warto
ś
ci to pierwsza warto
ść
0, a ka
ż
da nast
ę
pna jest o 1 wi
ę
ksza, czyli 1, 2, 3 itd.
Mo
ż
emy w dowolnym miejscu okre
ś
li
ć
rzeczywist
ą
warto
ść
całkowit
ą
, pami
ę
taj
ą
c,
ż
e je
ś
li dla
nast
ę
pnej warto
ś
ci nie b
ę
dzie okre
ś
lona rzeczywista warto
ść
całkowita, to wówczas b
ę
dzie ona o 1
wi
ę
ksza od podanej jawnie.
Rzeczywiste warto
ś
ci całkowite mog
ą
si
ę
powtarza
ć
- zazwyczaj jednak i tak okre
ś
lisz ró
ż
ne
warto
ś
ci, ale czasami ta cecha mo
ż
e si
ę
przyda
ć
.
Teraz troch
ę
przykładów,
ż
eby zobrazowa
ć
Ci przedstawione powy
ż
ej reguły i upewni
ć
si
ę
,
ż
e
wszystko rozumiesz. Nie b
ę
d
ę
ju
ż
ich komentował:
enum
mojTyp
{
a
,
b
,
c
,
d
,
e
,
f
,
g
};
// wartosci: 0, 1, 2, 3, 4, 5, 6
enum
mojTyp
{
a
=
3
,
b
,
c
,
d
,
e
,
f
,
g
};
// wartosci: 3, 4, 5, 6, 7, 8, 9
enum
mojTyp
{
a
,
b
,
c
,
d
=
0
,
e
,
f
,
g
};
// wartosci: 0, 1, 2, 0, 1, 2, 3
enum
mojTyp
{
a
=
3
,
b
,
c
=
3
,
d
,
e
=
2
,
f
,
g
=
7
};
// wartosci: 3, 4, 3, 4, 2, 3, 7
enum
mojTyp
{
a
=
3
,
b
=
3
,
c
=
3
,
d
=
3
,
e
=
3
,
f
=
3
,
g
=
3
};
// wartosci: 3, 3, 3, 3, 3, 3, 3
enum
mojTyp
{
a
=
60
,
b
=
0
,
c
,
d
,
e
,
f,
g
};
// wartosci: 60, 0, 1, 2, 3, 4, 5
Mam nadziej
ę
,
ż
e powy
ż
sze przykłady rozja
ś
niły Ci, w jaki sposób s
ą
wyznaczane warto
ś
ci dla
poszczególnych elementów.
Mimo,
ż
e jak ju
ż
wiesz, zmienna typu wyliczeniowego tak naprawd
ę
przyjmuje rzeczywisto
ś
ci
całkowite, to jednak nie b
ę
dziemy mogli przypisa
ć
do niej warto
ś
ci całkowitej. Jest to wła
ś
nie t
ą
du
żą
zalet
ą
- osi
ą
gn
ę
li
ś
my to co chcieli
ś
my.
W powy
ż
szych przykładach nawet je
ś
li a miałoby warto
ść
0, to do zmiennej mo
ż
emy przypisa
ć
tylko a, natomiast warto
ś
ci 0 przypisa
ć
nie mo
ż
emy. Dzi
ę
ki temu unikn
ę
li
ś
my przypisywania nic nie
znacz
ą
cych warto
ś
ci i konieczno
ś
ci czytania komentarzy, co oznacza np. warto
ść
0 dla danego typu
wyliczeniowego.
Wykorzystanie warto
ś
ci dla typu wyliczeniowego
Chc
ę
Ci w ko
ń
cu pokaza
ć
, do czego mog
ą
si
ę
przyda
ć
równie
ż
warto
ś
ci całkowite zmiennych typu
wyliczeniowego. W tym celu rozszerzymy nasz typ pojazdów i zało
ż
ymy,
ż
e dla podanej pr
ę
dko
ś
ci
chcemy okre
ś
li
ć
jak
ą
cz
ęść
pr
ę
dko
ś
ci generuje jeden silnik.
W powy
ż
szym przykładzie zauwa
ż
ysz,
ż
e dokonuj
ą
c zwykłych operacji arytmetycznych typu
dodawanie, mno
ż
enie itd. (tutaj akurat dzielenie) zmiennej typu wyliczeniowego ze zwykłymi liczbami
całkowitymi, taka zmienna zachowuje si
ę
wła
ś
nie jak zwykła liczba, czyli jej warto
ść
całkowita mo
ż
e
zosta
ć
wykorzystana.
Autor: Marcin Nabiałek Kontakt e-mail:
it-developer@wp.pl
Dokument jest chroniony prawem autorskim © 2004
Ten dokument został pobrany ze strony
http://it.hk.pl/
#include<iostream>
using namespace
std
;
int
main
()
{
int
ktory
;
int
predkosc
;
float
predkoscSilnika
;
enum
typPojazdu
{
bezsilnikowe
=
0
,
jednosilnikowe
,
dwusilnikowe
,
czterosilnikowe
=
4
,
wielosilnikowe
=
10
};
enum
typPojazdu
mojPojazd
;
cout
<<
"Nacisnij cyfre odpowiadajaca Twojemu typowi pojazdu i ENTER\n"
;
// te wartosci tutaj NIE MUSZA sie zgadzac z wartosciami w typie wyliczeniowym
cout
<<
"1 - Pojazd bezsilinikowy\n"
;
cout
<<
"2 - Pojazd jednosilnikowy\n"
;
cout
<<
"3 - Pojazd dwusilnikowy\n"
;
cout
<<
"4 - Pojazd czterosinilnikowy\n"
;
cout
<<
"5 - Pojazd wielosilnikowy\n"
;
cin >>
ktory
;
cin
.
ignore
();
switch (
ktory
)
{
case
1
:
mojPojazd
=
bezsilnikowe
; break;
case
2
:
mojPojazd
=
jednosilnikowe
; break;
case
3
:
mojPojazd
=
dwusilnikowe
; break;
case
4
:
mojPojazd
=
czterosilnikowe
; break;
case
5
:
mojPojazd
=
wielosilnikowe
; break;
default:
mojPojazd
=
bezsilnikowe
;
}
cout
<<
"Podaj predkosc Twojego pojazdu (wieksza od zera): "
;
cin
>>
predkosc
;
cin
.
ignore
();
if (
mojPojazd
==
bezsilnikowe
)
predkoscSilnika
=
0
;
else
predkoscSilnika
=
predkosc
/
mojPojazd
;
if (
predkoscSilnika
==
0
)
cout
<<
"Gratulacje. Cala predkosc "
<<
predkosc
<<
" tworzysz swoimi nogami\n"
;
else
cout
<<
"Predkosc jednego silnika to okolo "
<<
predkoscSilnika
<<
" bo "
<<
predkoscSilnika
<<
'*'
<<
mojPojazd
<<
'='
<<
predkosc
<<
'\n'
;
cout
<<
"\nNacisnij ENTER aby zakonczyc...\n"
;
getchar
();
return
0
;
}
Autor: Marcin Nabiałek Kontakt e-mail:
it-developer@wp.pl
Dokument jest chroniony prawem autorskim © 2004
Ten dokument został pobrany ze strony
http://it.hk.pl/
Podsumowanie
W tej lekcji przedstawiłem Ci dwa nowe typy danych: typ logiczny i typ wyliczeniowy. Oba typy s
ą
wa
ż
ne w j
ę
zyku C++, a bez typu logicznego tak naprawd
ę
nie da si
ę
w ogóle obej
ść
. Dlatego je
ś
li nie
wszystko udało Ci si
ę
zrozumie
ć
, zach
ę
cam do ponownego przeczytania tej lekcji.
Autor: Marcin Nabiałek Kontakt e-mail:
it-developer@wp.pl
Dokument jest chroniony prawem autorskim © 2004