|
|
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 największej wartości, wyszukiwanie najmniejszej wartości oraz sortowanie. Wartości ciągu powinny być a) wczytywane 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 oraz pętla switch-case pobierająca numer instrukcji. Naciśnięcie "0" powinno umożliwić wyjście z programu. Naciśnęcie dowolnego klawisza wyświetla instrukcję. | + | * Napisać funkcję <b>void hello()</b> wypisująca na ekranie napis "Program prezentujący działania na ciągu liczb!". |
- | * 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>. Użyć jej. |
- | * Naciśnięcie 1 - funkcja wypisująca tablicę <b>void wypisz(const int* tab, int n)</b>. | + | * Napisać funkcję wypełniającą tablicę losowymi liczbami z zakresu 1-50 <b>void losuj(int* tab, int n)</b> (1 pkt) |
- | | + | * 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.) |
- | * Naciśnięcie 2 - 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) : |
- | * Naciśnięcie 3 - 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 p.''') |
- | * Naciśnięcie 4 - 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. |
- | <hr>
| + | |
- | Powyższa część: 5 pkt.
| + | |
- | <hr> | + | |
- | * Naciśnięcie 5 - funkcja wypełniająca tablicę losowymi liczbami z zakresu 1-50 <b>void losuj(int* tab, int n)</b> (1 pkt)
| + | |
- | 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;
| + | |
- | | + | |
- | | + | |
- | <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>
| + | |
- | * Naciśnięcie 6 - unkcja sortująca tablicę <b>void sort(int *tab, int n)</b>. 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 59: |
Line 32: |
| 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> |
| + | [[File:Odch_std.png|300px]]<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< |
| + | <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>. | | * Naciśnięcie 7 - funkcja wpisująca dane z pliku do tablicy <b>void wpisz(int* tab, int n, const char* nazwa_pliku)</b>. |
| + | |
| + | --> |