lekcja20

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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


Wyszukiwarka

Podobne podstrony:
Lekcja kliniczna 2 VI rok WL
Lekcja Przysposobienia Obronnego dla klasy pierwszej liceum ogólnokształcącego
Lekcja wychowania fizycznego jako organizacyjno metodyczna forma lekcji ruchu
Lekcja kliniczna nr 2 VI rok WL
04 Lekcja
PF7 Lekcja2
lekcja52
Printing bbjorgos lekcja41 uzupelnienie A
lekcja 18 id 265103 Nieznany
Hydrostatyka i hydrodynamika lekcja ze wspomaganiem komputerowym
Lekcja 6 Jak zapamietywac z notatki Tajemnica skutecznych notatek
lekcja 20
Lekcja 04 Szene 04
LINGO ROSYJSKI raz a dobrze Intensywny kurs w 30 lekcjach PDF nagrania audio audio kurs
Printing bbjorgos lekcja01 05 A
'Half Life', czyli pół życia przed monitorem zagrożenia medialne foliogramy gim modul 3 lekcja 5
Lekcja od mamy
lekcja 3 id 265134 Nieznany
Lekcja 5 Czas Past Simple, lekcje

więcej podobnych podstron