lista4.pdf

(57 KB) Pobierz
106421460 UNPDF
UniwersytetZielonog ó rski
InstytutSterowaniaiSystem ó wInformatycznych
ProgramowanieobiektowewC++
Lista4 Wstƒpdoklas
1 wiczenia
1.Niechbƒdziedanytypz“o»onyreprezentuj¡cyliczbƒ
zespolon¡:
Zrealizowa¢nastƒpuj¡ce¢wiczenia:
(a)zde niowa¢konstruktordomniemany,
(b)prze“adowa¢operator - wwersjijednoargu-
mentowejorazdwuargumentowej,
(c)prze“adowa¢operatorpreinkrementacjioraz
postinkrementacji,
(d)prze“adowa¢operatorynewidelete,takaby
prowadzi¢statystykƒzu»ywanejpamiƒci.
classfLiczbaZespolona{
private:
floatRe,Im;
public:
//uzupe“ni¢wew“asnym
//zakresie;-)
};
4.Przeanalizowa¢poni»szyfragmentkodu
Zadeklarowa¢izde niowa¢:
#include<iostream.h>
classsamochod{
intfiltr_powietrza;
public:
intakumulator,zbiornik_paliwa;
//...
(a)konstruktorinicjalizuj¡cy(zastosowa¢listƒini-
cjalizacyjn¡),
(b)konstruktordomniemany,
(c)metodƒdodajumo»liwiaj¡c¡dodaniedw ó ch
liczbzespolonych,
(d)funkcjƒoperatorow¡ + wykonuj¡c¡zadaniez
punktu(1c)wwersjiglobalnejorazjakosk“a-
dow¡klasy,
(e)funkcjƒoperatorow¡ + wykonuj¡c¡dodawa-
niewarto–cirzeczywistejdoliczbyzespolo-
nej,takabymo»liwaby“anotacjaprzemien-
na(adok“adniej: oat+fLiczbaZespolonaoraz
fLiczbaZespolona+ oat),zde niowa¢obiekty
inapisa¢przyk“adowewywo“aniafunkcji.
};
samochodA,B;
int*wsk1;
intsamochod::*wsk2=&samochod::akumulator;
voidmain(){
wsk1=&(A.akumulator);
cout<<*wsk1<<A.*wsk2;
wsk1=&(B.akumulator);
cout<<*wsk1<<B.*wsk2;
//...
}
2.Danyjestprzyk“adklasy:
Oceni¢poprawno–¢instrukcji:
classwizytowka{
public:
char*nazw;char*imie;char*tel;
(a)wsk1=&(B.zbiornik_paliwa);
(b)wsk1=&(B.filtr_powietrza);
(c)wsk2=samochod::filtr_powietrza;
(d)wsk2++;
(e)wsk1++;
};
Zadeklarowa¢izde niowa¢:
5.Okre–li¢poprawno–¢nastƒpuj¡cychdeklaracji,po-
da¢r ó wnie»przyczynydlakt ó rychs¡poprawneb¡d„
nie?
(a)konstruktorinicjalizuj¡cy(domniemany),
(b)konstruktorkopiuj¡cy,
(c)operatorprzypisania = umo»liwiaj¡cyskopio-
waniezawarto–ciobiektu,
(d)destruktor.
(a)f(inti,intj,intk=0);f(inti,intj);
(b)f(inti,charj);f(intj);
(c)f(constintk);f(intk);
(d)f(constint&k);f(int&k);
Zde niowa¢obiektyinapisa¢przyk“adowewywo“a-
niafunkcji.
6.Okre–lonyzosta“zal¡»eknastƒpuj¡cejklasywektor
zde niowanajako
3.Dlanastƒpuj¡cejstruktury:
classMacierz2D{
staticintpamiec;
int(*T)[n][m];
classwektor{
intx,y,z;
public:
//...pozosta“yinterfejs
};
};
106421460.001.png
Doda¢implementacjƒnastƒpuj¡cychelement ó w:
8.Niechbƒdziedanaklasamacierzzde niowananastƒ-
puj¡co:
(a)konstruktordomniemany,
(b)konstruktorinicjuj¡cyzlist¡inicjalizacyjn¡,
(c)sk“adowefunkcjeoperatorowe + , , * umo»-
liwiaj¡cedodawanie,odejmowanieimno»enie
wektor ó w,
(d)funkcjezpunktu(c)wwersjiglobalnej.
classmacierz{
intliczba_wierszy,liczba_kolumn;
public:
float*tablica;
...
};
7.Dlaklasystring:
Zde niowa¢:
classstring{
introz;
char*wsk;
public:
//...metody
(a)konstruktoryinicjuj¡cy(domniemany)ikopiu-
j¡cy,
(b)sk“adowefunkcjeoperatorowe + , - , * ,
umo»liwiaj¡cedodawanie,odejmowanieimno-
»eniemacierzy,
(c)funkcje + , - , * realizuj¡ceprzemienne
dodawanie,odejmowanieimno»eniemacierzy
przezskalar,
(d)operatorprzypisania = umo»liwiaj¡cyskopio-
waniemacierzy,
(e)funkcjƒsk“adow¡obliczaj¡c¡wyznacznikma-
cierzykwadratowej,
(f)destruktor.
};
Dokona¢implementacji:
(a)nastƒpuj¡cychkonstruktor ó w:standardowy(z
list¡inicjalizacyjn¡),domniemanyikopiuj¡cy,
(b)metody:zwracaj¡cerozmiar“a«cucha,skleja-
j¡cedwa“a«cuchywjeden,odwracaj¡cekolej-
no–¢literw“a«cuchuipor ó wnuj¡c¡zawarto–¢
dw ó ch“a«cuch ó w,
(c)destruktor,
(d)funkcjeoperatorowe , oraz = .
9.Stosuj¡cwska„nikidosk“adowychklasyposortowa¢
50elementow¡wygenerowan¡losowotablicƒobiek-
t ó wz¢wiczenia2wed“ugzadanegopola(dopor ó w-
nania“a«cuch ó wznak ó wmo»nazastosowa¢funkcjƒ
strcmpzpakietustring.h).
Czyponi»szede nicjekonstruktor ó ws¡poprawne?
Odpowied„uzasadni¢.
(a)string::string(chart[]):
wsk(newchar[roz+1]),
roz(strlen(t))
10.Zaprojektowa¢specjalnywska„nikdowarto–citypu
ca“kowitego,kt ó rybƒdziezapamiƒtywa“10ostatnio
wskazywanychprzezniegoadres ó woraz20adres ó w
ostatnioutworzonychegzemplarzytakiegowska„ni-
ka.Nastƒpnieprze“adowa¢operatoryinkrementacji
idekrementacjidlatejklasyobiekt ó w.
{
strcpy(wsk,t);
}
(b)string::string(string);
Zgłoś jeśli naruszono regulamin