|
|
(3 intermediate revisions not shown) |
Line 1: |
Line 1: |
- | Na laboratoriach pojawią się funkcje (<b>wykład 6</b>). Powrócimy również do pracy na tablicach (<b>wykład 5</b>) oraz struktury switch-case (<b>wykład 3, slajd 11</b>).
| |
- |
| |
- | <hr>
| |
| <!-- | | <!-- |
- | | + | Napisać program umożliwiający różnorakie działania na ciągu liczb: obliczenie średniej, odchylenia standardowego, sortowanie. Wartości ciągu powinny być losowane. Ilość liczb w ciągu powinna być podawana na początku działania programu (liczba <b>N</b>). |
- | Napisać program umożliwiający różnorakie działania na ciągu liczb: wyszukiwanie najmniejszej i największej wartości, sortowanie. Wartości ciągu powinny być a) ustawiane z klawiatury, b) losowane. Ilość liczb w ciągu powinna być podawana na początku działania programu (liczba <b>N</b>). | + | |
- | | + | |
- | | + | |
- | Kolejne działania powinny być wykonywane na żądanie użytkownika. Naciśnięcie "0" powinno umożliwić wyjście z programu.
| + | |
| | | |
| * Stworzyć alokowaną dynamicznie tablicę <i>tablica</i> (ilość elementów w tablicy powinna zostać pobrana z klawiatury). Tablica powinna zostać w całości zainicjowana wartością 0. | | * Stworzyć alokowaną dynamicznie tablicę <i>tablica</i> (ilość elementów w tablicy powinna zostać pobrana z klawiatury). Tablica powinna zostać w całości zainicjowana wartością 0. |
- | * Pętla while, w której pobierany jest pojedynczy znak z klawiatury. Naciśnięcie "0" powinno umożliwić wyjście z programu. | + | * Napisać funkcję <b>void hello()</b> wypisująca na ekranie napis "Program prezentujący działania na ciągu liczb!". (0.5 pkt) |
- | * Funkcja <b>void print()</b> wypisująca instrukcję użytkowania programu na ekran.
| + | * Napisać funkcję wypisującą tablicę <b>void wypisz(const int* tab, int n)</b>. (0.5 pkt) |
- | * Pętla switch-case pobierająca numer instrukcji.
| + | * Napisać funkcję wypełniającą tablicę losowymi liczbami z zakresu 1-50 <b>void losuj(int* tab, int n)</b> (1 pkt) |
- | * Funkcja wypisująca tablicę <b>void wypisz(const int* tab, int n)</b>. | + | * Npisać funkcję obliczającą i wypisującą na ekran wartość średnią wczytanej próbki danych: <b>void srednia(const float* tab, int n)</b> (1 p.) |
- | * Funkcja wpisująca dane z klawiatury do tablicy <b>void wpisz(int* tab, int n)</b>. | + | * Napisać funkcję '''zwracającą''' odchylenie standardowe wartości średniej (jak policzyć odchylenie standardowe – patrz '''Uwaga 1''' poniżej) : |
- | * Funkcja znajdująca największy element w ciągu i zwracająca ją <b>void max(const int* tab, int n)</b>. Liczba powinna zostać wypisana na ekran we wnętrzu funkcji. | + | <code>float odchStd(const float* tab, int n)</code> (1 pkt) |
- | * Funkcja znajdująca najmniejszy element w ciągu i zwracająca ją <b>int min(const int* tab, int n)</b>. Liczba powinna zostać wypisana w funkcji głównej main. | + | * Funkcja sortująca tablicę <b>void sortuj(int *tab, int n)</b>. Należy użyć sortowania przez wstawianie. (1 pkt) |
- | <hr>
| + | |
- | Powyższa część: 5 pkt.
| + | |
- | <hr>
| + | |
- | * Funkcja wypełniająca tablicę losowymi liczbami. (1 pkt) | + | |
- | Należy dołączyć biblioteki:
| + | |
- | #include <stdlib.h>
| + | |
- | #include <time.h>
| + | |
- | | + | |
- | W funkcji głównej main na początku należy dopisać:
| + | |
- | srand(time(NULL)); //ustawienie ziarna z zegara systemowego by uzyskać losowość ("wartości początkowej" dla generatora liczb losowych)
| + | |
- | | + | |
- | Wylosowanie pojedynczej liczby z zakresu 0-99:
| + | |
- | int losowa = rand()%100;
| + | |
- | | + | |
- | | + | |
- | <b>Obowiązkowo:</b>
| + | |
- | * Zrozumienie, analiza treści, projekt programu + poprawność i estetyka kodu. | + | |
- | * Należy pamiętać o zwalnianiu pamięci dla dynamicznie zaalokowanej tablicy.
| + | |
- | * Wszystkie operacje w pętli switch-case powinny być wykonywane przez odpowiednie funkcje.
| + | |
- | | + | |
- | | + | |
- | <b>Dodatkowe:</b>
| + | |
- | * Funkcja sortująca tablicę. Należy użyć sortowania przez wstawianie. (dodatkowe 0.5 pkt)
| + | |
| | | |
| Sortowanie przez wstawianie (ang. <i>Insert Sort, Insertion Sort</i>) - jeden z najprostszych algorytmów sortowania, którego zasada działania odzwierciedla sposób w jaki ludzie ustawiają karty - kolejne elementy wejściowe są ustawiane na odpowiednie miejsca docelowe. | | Sortowanie przez wstawianie (ang. <i>Insert Sort, Insertion Sort</i>) - jeden z najprostszych algorytmów sortowania, którego zasada działania odzwierciedla sposób w jaki ludzie ustawiają karty - kolejne elementy wejściowe są ustawiane na odpowiednie miejsca docelowe. |
Line 58: |
Line 28: |
| j = j - 1 | | j = j - 1 |
| end while | | end while |
- | A[j] = x[3] | + | A[j] = x |
| end for | | end for |
| | | |
| + | Należy dołączyć biblioteki: |
| + | #include <stdlib.h> |
| + | #include <time.h> |
| + | |
| + | W funkcji głównej <b>main</b> na początku należy dopisać: |
| + | srand(time(NULL)); //ustawienie ziarna z zegara systemowego by uzyskać losowość ("wartości początkowej" dla generatora liczb losowych) |
| + | |
| + | Wylosowanie pojedynczej liczby z zakresu 0-99: |
| + | int losowa = rand()%100; |
| + | |
| + | |
| + | '''Uwaga 1!''' Odchylenie standardowe wartości średniej:<br> |
| + | [http://www.if.pw.edu.pl/~lgraczyk/wiki/images/thumb/2/23/Odch_std.png/800px-Odch_std.png wzór]<br> |
| + | Aby policzyć pierwiastek z liczby używamy funkcji <code>sqrt</code> (dla typu <code>double</code>; lub jej wariantu <code>sqrtf</code> dla typu <code?float</code>):<br> |
| + | <code>double sqrt (double x);</code><br> |
| + | <code>float sqrtf (float x);</code><br> |
| + | Należy dołączyć bibliotekę: <code>math.h</code><br> |
| + | Do polecenia <code>gcc</code> dokladamy dodatkowo flagę <code>-lm</code> |
| + | <br> |
| + | |
| + | |
| + | <b>Obowiązkowo:</b> |
| + | * Zrozumienie, analiza treści, projekt programu + poprawność i estetyka kodu. |
| + | * Należy pamiętać o zwalnianiu pamięci dla dynamicznie zaalokowanej tablicy. |
| + | |
| + | |
| + | <b>Dodatkowe:</b> |
| | | |
| + | * Naciśnięcie 7 - funkcja wpisująca dane z pliku do tablicy <b>void wpisz(int* tab, int n, const char* nazwa_pliku)</b>. |
| | | |
| --> | | --> |