Zadania z programowania C++ (wraz z odpowiedziami).pdf

(294 KB) Pobierz
1108150 UNPDF
Zadania z Programowania C++ M
z dnia 5 stycznia 2007
rodowisko pracy. Program make . Debugger ddd .
Zad. 1. Dokonaj kompilacji pliku ¹ródªowego hello.cc 1
do pliku z pro-
gramem binarnym hello . Uruchom program.
Zad. 2. Dokonaj kompilacji pliku »ródªowego hello.cc do pliku hello.o ,
a nast¦pnie do pliku hello . Uruchom program.
Zad. 3. Dokonaj kompilacji plików ¹ródªowych hellobis.cc i pisz.cc w
celu otrzymania programu hellobis . Uruchom program.
Zad. 4. Przygotuj wersje binarne programów hello i hellobis
a) z wykorzystaniem bibliotek dynamicznych,
b) w wersji statycznej.
Zad. 5. Napisz plik Makefile z jawnymi zasadami kompilacji programów
hello i hellobis . Dodatkowo zdeniuj reguª¦ clean usuwaj¡c¡ wszystkie
pliki po±rednie .o oraz wynikowe ( hello i hellobis ).
Zad. 6. Napisz plik Makefile z domy±lnymi zasadami kompilacji progra-
mów w j¦zykach C i C++. Nast¦pnie korzystaj¡c z tych zasad dopisz reguªy
zwi¡zane z przygotowaniem programów hello i hellobis .
Zad. 7. Wykorzystuj¡c predeniowane reguªy kompilacji napisz plik Ma-
kefile przygotowuj¡cy programy hello i hellobis w sposób wymagany dla
±ledzenia ich pracy debuggerem.
Zad. 8. Korzystaj¡c z jawnych polece« napisz plik Makefile , który dla
pliku sprawozdanie.tex b¦dzie umo»liwiaª utworzenie wersji .dvi ( make
sprawozdanie.dvi ), .ps i .pdf . Zadbaj aby proces L A T E Xowania wykona¢
dwukrotnie. Nast¦pnie stwórz kolejny plik Makele z domy±lnymi zasadami
L A T E Xowania dla plików ¹ródªowych o nazwach zako«czonych na .tex .
Zad. 9. Na przykªadzie programów hello , hellobis i pierwsze porównaj
jako±¢ kodu (rozmiar, szybko±¢ wykonania) wygenerowanego przez kompila-
tor z opcj¡ -O0 i -O2 . Dla pomiaru czasu skorzystaj z polecenia time .
Zad. 10. Dokonaj kompilacji programów hello , hellobis i pierwsze z
poziomu edytora (np. Emacs w systemie Linux, Scintilla w systemie MS
Windows).
1 Wersje ¹ródªowe programów dost¦pne s¡ w katalogu ~pablo/progs .
1
1108150.002.png
 
Zad. 11. Przy pomocy debuggera ( ddd w systemie Linux, td32 w systemie
MS Windows) prze±led¹ wykonanie programów hello , hellobis i pierwsze .
W programie pierwsze obserwuj warto±ci zmiennych i i j oraz zmie« war-
to±¢ zmiennej i . Nast¦pnie poleceniem strip usu« z pliku binarnego dane
potrzebne do ±ledzenia pracy programu.
Operacje wej±cia/wyj±cia
Zad. 12. Korzystaj¡c ze staªej M_PI zdeniowanej w pliku nagªówkowym
cmath napisz program pi wypisuj¡cy do standardowego strumienia wyj±cio-
wego 5 kolejnych pot¦g liczby z dokªadno±ci¡ liczby cyfr po przecinku równ¡
wykªadnikowi pot¦gi
pot¦ga warto±¢
----------------
1 3.1
2 9.87
3 31.006
4 97.4091
5 306.01968
Przygotuj dwie werjse rozwi¡zania: pierwsz¡ w oparciu o funkcj¦ printf
charakterystyczn¡ dla j¦zyka C i drug¡ korzystaj¡c¡ z biblioteki iostream
j¦zyka C++.
Zad. 13. Napisz program liczby odczytuj¡cy ze standardowego stru-
mienia wej±ciowego dwie liczby caªkowite ( int ) i zapisuj¡cy do standardo-
wego strumienia wyj±ciowego warto±ci odczytanych liczb, ich iloraz i sum¦.
Sprawd¹ dziaªanie programu dla nast¦puj¡cych danych wej±ciowych
1 , 3
2 , 0
3 , 1.5
7 , a
Nast¦pnie dokonaj zmiany odczytywanych liczb na rzeczywiste ( double ) i
ponownie sprawd¹ dziaªanie programu.
Zad. 14. Pocz¡wszy od bie»¡cego semestru nasz wydziaªowy barek wpro-
wadziª nowy sposób obsªugi dla klientów b¦d¡cych studentami zapisanymi
w systemie USOS. Barek udziela kredytu, pod warunkiem, »e osoba zamówi
dokªadnie 3 rzeczy. W celu rozliczenia przesyªa nast¦pnie studentowi maila
z rachunkiem, np. w pliku rachunek.txt
2
kanapka: 2.50
szarlotka: 1.50
woda mineralna: 1.50
Tre±¢ listu skªada si¦ zawsze z 3 wierszy. Ka»dy wiersz zawiera nazw¦ towaru,
dwukropek, cen¦ w zªotych. Nazwa towaru mo»e si¦ skªada¢ z dowolnej liczby
sªów oddzielonych odst¦pami, a sªowa wyª¡cznie z liter.
Napisz program suma obliczaj¡cy caªkowit¡ nale»no±¢ do zapªaty. Podaj
dwa rozwi¡zania: pierwsze charakterystyczne dla j¦zyka C, drugie dla j¦zyka
C++.
% ./suma < rachunek.txt
2.50+1.50+1.50=5.50
Zad. 15. Plik 2pi.txt zawiera dwa wiersze. W ka»dym wierszu zapisana
jest wyª¡cznie warto±¢ liczby z losowo wybran¡ liczb¡ cyfr po przecinku
2 h100;1). Napisz program zamiana , który zamieni kolejno±¢ tych liczb
w pliku. Podaj dwa rozwi¡zania: pierwsze charakterystyczne dla j¦zyka C,
drugie dla j¦zyka C++.
Zad. 16. Korzystaj¡c z operatora sizeof sprawd¹ rozmiary nast¦puj¡cych
typów danych w wykorzystywanym przez siebie kompilatorze.
char
short int
int
long int
float
double
bool
enum
char*
Instrukcje warunkowe i iteracje
3
Zad. 17. Napisz program znaczace sprawdzajacy liczb¦ cyfr znacz¡cych
typów float i double .
Wskazówka: obliczaj sum¦
P
1
i=0
100 000 000
X
1
i 2
i=1
Dokonaj sumowania w kolejno±ci
1
1 2
+
1
2 2
+
1
3 2
+ ::: +
1
100 000 000 2
oraz w kolejno±ci odwrotnej
1
100 000 000 2
+
99 999 999 2 + ::: 1
1
1 2
Obliczenia przeprowad¹ posªuguj¡c si¦ zmiennymi typu
float
double
Wytªumacz ró»nice. Który z wyników jest najbli»szy prawdzie?
Wskazówka:
P
1
i=1
i 2 = 2
6
Zad. 19. Napisz program anagram , który odczytuj¦ nazw¦ pliku podan¡
przez u»ytkownika, a nast¦pnie odwraca kolejno±¢ bajtów w tym pliku.
% ./anagram
Podaj nazw¦ pliku
a.txt
%
Zad. 20. Korzystaj¡c z instrukcji iteracyjnych napisz program pi3 wypi-
suj¡cy w kolejnych wierszach warto±¢ z dokªadno±ci¡ do i miejsc po prze-
cinku.
3.1
3.14
3.141
3.1415
3.14159
Zad. 21. Korzystaj¡c z instrukcji iteracyjnych napisz program pi4 wy-
pisuj¡cy w kolejnych wierszach warto±¢ i z dokªadno±ci¡ do i miejsc po
przecinku.
4
10 i .
Zad. 18. Napisz program kwadraty obliczaj¡cy sum¦
1
1108150.003.png 1108150.004.png
pot¦ga warto±¢
----------------
1
3.1
2
9.87
3
31.006
4
97.4091
5
306.01968
Zad. 22. Napisz program tworz¡cy zadany rysunek. Warunek: instrukcj¦
wypisuj¡c¡ znak (np. * ) lub liczb¦ w tabelce mo»na u»y¢ tylko jeden raz.
**********
** *
* * *
* * *
* * *
* * *
* * *
* * *
* **
**********
-------------------------
| 1 | 2 | 3 | 4 |
-------------------------
| 2 | 4 | 6 | 8 |
-------------------------
| 3 | 6 | 9 | 12 |
-------------------------
| 4 | 8 | 12 | 16 |
-------------------------
Zad. 23. Napisz program slowa odczytuj¡cy liczb¦ sªów ze strumienia
wej±ciowego i wypisuj¡cy ich liczb¦ oraz ±redni¡ dªugo±¢. Obliczenia przepro-
wad¹ dla tekstów Pana Tadeusza i Hamleta. 2
Zad. 24. Napisz program licz b¦d¡ce odpowiednikiem systemowego po-
lecenia wc , zliczaj¡cego liczb¦ znaków, sªów i wierszy w standardowym stru-
mieniu wej±ciowym. Dziaªanie programu sprawd¹ na jego pliku ¹ródªowym
licz.cc i porównaj z programem wc .
Zad. 25. Napisz program rzeczywista , który liczb¦ a podan¡ jako argu-
ment wypisuje w postaci
p 2 w
Skorzystaj z operacji na bitach i funkcji frexp , ldexp .
2 Teksty utworów dost¦pne s¡ w plikach ~pablo/pt.txt i ~pablo/h.txt .
5
1108150.001.png
 
Zgłoś jeśli naruszono regulamin