Lista powtórkowa – Programowanie proceduralne
1. Napisz program, który wyznacza iloczyn wartości skalarnej c i wektora A o dowolnej liczbie elementów. Mnożenie stałej i wektora ma być wykonane w zdefiniowanej osobno funkcji void iloczyn(int, float, float[]). Wynikiem wyświetlonym w konsoli mają być wartości dwóch wektorów: c * A = Ac. Przetestuj działanie zdefiniowanej funkcji iloczyn().
Przykładowy efekt działania programu dla stałej c = 2 oraz wektora A = {3, 4}:
2. Napisz funkcję, która dla danej tablicy liczb całkowitych o dowolnym rozmiarze ustawi w losowej kolejności występujące w niej liczby. Skompiluj i uruchom program, który wyświetli zawartość tablicy przed i po wywołaniu napisanej funkcji.
3. Zaimplementuj funkcję, która oblicza wskazaną przez użytkownika liczbę z ciągu Catalana.
4. W pliku seria_pomiarowa.dat w pierwszym wierszu znajduje się liczba całkowita określająca liczbę kolejnych wierszy, w kolejnych wierszach jako pary liczb zmiennoprzecinkowych przechowywane są dane o czasie t i położeniu y pewnej cząstki – dane tworzą dwie kolumny oddzielone tabulatorem. Napisz program, który prosi użytkownika o podanie nazwy pliku. Następnie odczytuje z tego pliku liczbę całkowitą n. W dalszej kolejności odczytuje n par liczb rzeczywistych do dwóch tablic n- elementowych. Rozbuduj program o funkcje obliczające przybliżenie pierwszej pochodnej (prędkości) ze wzoru 𝑣𝑖 =𝑦𝑖+1−𝑦𝑖
𝑡𝑖+1−𝑡𝑖 i drugiej (przyspieszenia) ze wzoru 𝑎𝑖 = 𝑦𝑖+2−2∗𝑦𝑖+1+𝑦𝑖
𝑡𝑖+1−𝑡𝑖 . Oczywiście te dwie pochodne da się policzyć dla wszystkich punktów poza ostatnim (i przedostatnim dla przyspieszenia). Wyposaż swój program w możliwość zapisu do pliku wyjściowego, którego nazwę poda użytkownik.
5. Pewna firma prowadzi rekrutację na staż na podstawie średniej z ocen studenta. Napisz strukturę student, która będzie przechowywać dane pojedynczego kandydata, to znaczy powyższą liczbę zmiennoprzecinkową, datę urodzenia, oraz imię i nazwisko (możesz odgórnie zadać rozmiar przechowywanych tablic). Wyposaż ją w funkcje pozwalające nawypisywanie na ekran i odczytywanie z klawiatury danych studenta.
Dodatkowo napisz funkcję, która dla zadanego kandydata i progu na średnią obliczy, czy student powinien zostać przyjęty na staż.
UWAGA: W celu przechowania daty urodzenia studenta napisz strukturę pomocniczą przechowującą trzy składowe typu całkowitoliczbowego reprezentujące dzień, miesiąc i rok.
6. Napisz program, który poprosi użytkownika o podanie liczby boków wielokąta foremnego oraz długość jego boku, a następnie obliczy oraz wyświetli wartość jego pola i obwodu. W tym celu napisz funkcję, pobierającą dwa argumenty: typu całkowitoliczbowego oraz typu zmiennoprzecinkowego. W funkcji wyświetl wartość pola i obwodu wielokąta. Do wyliczenia pola wielokąta skorzystaj ze wzoru:
P = 1/4 * n * a2 * ctan(π/n), gdzie: a - długość boku i n - liczba jego boków.
7. Napisz program, który poprosi użytkownika o podanie imion i nazwisk, a następnie wyświetli na ekranie napis zawierający stosowne inicjały. W tym celu napisz funkcję inicjaly() operująca na tablicy znaków, która będzie wypisywać na ekran stosowne litery. Postaraj się zwrócić inicjały w postaci dużych liter. Pamiętaj o możliwości posiadania kilku imion/nazwisk, np. Jan Maciej Karol Wścieklica -> J.M.K.W.
8. Zdefiniuj strukturę wymierna modelującą liczbę wymierną w postaci ułamka zwykłego, tzn. w składowych struktury przechowuj wartość licznika i mianownika ułamka.
Wyposaż ją w funkcje pozwalające na wypisywanie na ekran i odczytywanie z klawiatury ułamków zwykłych. Dodatkowo zaimplementuj funkcje umożliwiające:
a. dodawanie dwóch ułamków zwykłych, b. odejmowanie dwóch ułamków zwykłych, c. mnożenie dwóch ułamków zwykłych, d. dzielenie dwóch ułamków zwykłych,
e. porównywanie dwóch ułamków zwykłych (UWAGA: porównujemy liczby a nie ich konkretne zapisy, zapis 2/4 jest inny niż ½, ale to jest ta sama liczba!)
Mianownik powinien być dodatni, a znak liczby przetwarzany jako znak licznika.
Przetestuj działanie napisanych funkcji.
9. Napisz program wczytujący n liczb całkowitych z zakresu od -7 do 10 i wyznaczający ich medianę. W tym celu napisz funkcję median(), która będzie pobierać jako argumenty tablice i jej rozmiar, a zwracać wyznaczoną medianę. W funkcji median() wywołaj pomocnicza funkcje sortowanie(). Przetestuj działanie zaimplementowanych funkcji.
10. Opracuj algorytm obliczania wielkości n!! (przy założeniu n>0), określonej jako n!!=n*(n-2)*...*(n-2k) dla dodatnich czynników, czyli np. 6!!=6*4*2, 7!!=7*5*3*1.
Napisz funkcję, która obliczy podwójoną silnię – spróbuj rozwiązać to zadanie na dwa sposoby rekurencyjnie i iteracyjnie. Skompiluj i uruchom program, który wyświetli obliczony wynik dla argumentu podanego przez użytkownika (wpisanego z klawiatury).
Sylwia Majchrowska