Zadania z Programowania C++

Zadania z Programowania C++ M z dnia 5 stycznia 2007 Środowisko pracy. Program make. Debugger ddd. Zad. - pdf za darmo

11 downloads 82356 Views 294KB Size

Recommend Stories


zadania z geometrii
zadania z geometrii - pdf za darmo

zadania z matematyki
zadania z matematyki - pdf za darmo

ZADANIA Z ALKACYMETRII
ZADANIA Z ALKACYMETRII1/. Oblicz pH roztworu otrzymanego w wyniku dodania do 50 cm3 roztworu kwasu octowego - pdf za darmo

zadania z pyt
zadania z pyt - pdf za darmo

Story Transcript


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.cc1 do pliku z programem 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 zdefiniuj regułę clean usuwającą wszystkie pliki pośrednie .o oraz wynikowe (hello i hellobis). Zad. 6. Napisz plik Makefile z domyślnymi zasadami kompilacji programó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 predefiniowane reguły kompilacji napisz plik Makefile 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 LATEXowania wykonać dwukrotnie. Następnie stwórz kolejny plik Makefile z domyślnymi zasadami LATEXowania 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 kompilator 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

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ń wartość 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 zdefiniowanej w pliku nagłówkowym cmath napisz program pi wypisujący do standardowego strumienia wyjściowego 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 strumienia wejściowego dwie liczby całkowite (int) i zapisujący do standardowego 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 wprowadził 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 ∈ h100, ∞). 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. P Wskazówka: obliczaj sumę i=0 101 i . Zad. 18. Napisz program kwadraty obliczający sumę 100 X 000 000 i=1

1 i2

Dokonaj sumowania w kolejności 1 1 1 1 + 2 + 2 + ... + 2 1 2 3 100 000 0002 oraz w kolejności odwrotnej 1 1 1 + + ... 2 2 2 100 000 000 99 999 999 1 Obliczenia przeprowadź posługując się zmiennymi typu • float • double Wytłumacz różnice. z wyników jest najbliższy prawdzie? P∞ 1 Który π2 Wskazówka: i=1 i2 = 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 wypisujący w kolejnych wierszach wartość π z dokładnością do i miejsc po przecinku. 3.1 3.14 3.141 3.1415 3.14159

Zad. 21. Korzystając z instrukcji iteracyjnych napisz program pi4 wypisujący w kolejnych wierszach wartość π i z dokładnością do i miejsc po przecinku. 4

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 przeprowadź dla tekstów Pana Tadeusza i Hamleta.2 Zad. 24. Napisz program licz będące odpowiednikiem systemowego polecenia wc, zliczającego liczbę znaków, słów i wierszy w standardowym strumieniu 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 argument wypisuje w postaci p · 2w 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

% ./rzeczywista 2005 0.9790039062500000*2^11

Nie uwzględniaj szczególnej reprezentacji wartości 0. Zad. 26. Mając daną zmienną typu rzeczywistego double i wiedząc, że jest postaci p · 2w oraz posługując się operacjami bitowymi i funkcjami frexp, ldexp skonstruuj liczbę w

p · 2b 2 c Nie uwzgędniaj szczególnej reprezentacji wartości 0. Zad. 27. Napisz program pierwiastek, który oblicza pierwiastek kwadratowy zadanej liczby. Nie korzystaj z istniejącej funkcji sqrt lecz zaimplementuj wzór Newtona, dla którego √ x = lim an , n→∞

gdzie (an ) jest ciągiem zadanym rekurencyjnie an+1 = 12 (an + axn ). Wykonaj 10 iteracji przez kopiowanie fragmentu programu. Zwróć uwagę, na a) szybkość zbiegania w zależności od początkowej wartości a0 , b) zachowanie dla ujemnych x. Dla ustalenia wartości a0 skorzystaj z poprzedniego zadania. Zad. 28. Korzystając ze wzoru Gaussa napisz program dzien, który oblicza dzień tygodnia na podstawie daty. Numer dnia określony jest następującym wzorem r/4 − r/100 + r/400 + 367m/12 + d + 365r , gdzie d ∈ {1, . . . } jest dniem miesiąca, m ∈ {1, . . . , 12} – miesiącem, r – rokiem. Dzielenie jest typu całkowitego. Ponadto za początek roku należy przyjąć dzień 1 marca. Zad. 29. Napisz program podatki obliczający wysokość podatku dochodowego w 2003 roku. Przyjmij następujące dane: skala 19 % dla dochodów poniżej 37024 zł, 30 % dla dochodów poniżej 74048 zł, 40 % dla dochodów poniżej 600000 zł, 50 % dla pozostałych. Kwota wolna od podatku to 530.08 zł. 6

Dane dotyczące wysokości kwot i podatku odpowiadające poszczególnym progom zapisz w tablicy. Zad. 30. Napisz program dziennik, który oblicza ile dni upłynęło od podanej daty do dnia uruchomienia programu. Skorzystaj z doświadczeń programu dzien i funkcji time przekazującej liczbę sekund jakie upłynęły od godziny 000 dnia 1 stycznia 1970 roku. W zależności od wprowadzonych danych wynikiem działania programu powinno być wypisanie jednego sposród poniższych komunikatów: a) Dziś masz mały jubileusz! b) Jutro masz mały jubileusz! c) Pojutrze masz mały jubileusz! d) Do najbliższej 1000-nicy zostało Ci n dni. e) Czy na pewno się już urodziłeś? Zad. 31. Korzystając z liczb całkowitych typu int napisz program silnia obliczający silnię zadanej liczby oraz liczbę wystąpień cyfry 7 w jej zapisie dziesiętnym. Silnie jakiej największej liczby możemy policzyć tym programem? Zad. 32. Napisz program podzielne znajdujący wszystkie liczby z zakresu od 1 do 1000, które są podzielne przez sumę swoich cyfr. Zad. 33. Napisz program podzielne2 znajdujący wszystkie liczby z zakresu od 1 do 1000, które są jednocześnie podzielne przez sumy swoich parzystych i nieparzystych cyfr. Zad. 34. Napisz program cezar, który czyta bajty ze standardowego strumienia wejściowego (funkcja cin.get) i przepisuje do standardowego strumienia wyjściowego (cout.put) zastępując litery alfabetu łacińskiego literami znajdującymi się w alfabecie o n pozycji dalej. Wartość n odczytaj z parametru uruchomienia programu. Zad. 35. Napisz program wielomian obliczający wartość wielomianu w(x) = 100x3 − 625x2 + 1183.19x − 660.489 = 100(x − 3.19)(x − 2.05)(x − 1.01) w zadanym punkcie. Obliczenie wartości wielomianu różnymi sposobami a) 100 * x * x * x - 625 * x * x + 1183.19 * x - 660.489 b) ( ( 100 * x - 625 ) * x + 1183.19 ) * x - 660.489 7

c) 100 * ( x - 3.19 ) * ( x - 2.05 ) * ( x - 1.01...

Life Enjoy

When life gives you a hundred reasons to cry, show life that you have a thousand reasons to smile

Get in touch

Social

© Copyright 2016 - 2019 AZPDF.PL - All rights reserved.