From MJanik
(Difference between revisions)
|
|
(2 intermediate revisions not shown) |
Line 3: |
Line 3: |
| * 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. |
| * Napisać funkcję <b>void hello()</b> wypisująca na ekranie napis "Program prezentujący działania na ciągu liczb!". (0.5 pkt) | | * Napisać funkcję <b>void hello()</b> wypisująca na ekranie napis "Program prezentujący działania na ciągu liczb!". (0.5 pkt) |
- | * Napisać funkcję wypisującą tablicę <b>void wypisz(const int* tab, int n)</b>. (0.5 pkt) | + | * Napisać funkcję wypisującą tablicę <b>void wypisz(const float* tab, int n)</b>. (0.5 pkt) |
- | * Napisać funkcję wypełniającą tablicę losowymi liczbami z zakresu 1-50 <b>void losuj(int* tab, int n)</b> (1 pkt) | + | * Napisać funkcję wypełniającą tablicę losowymi liczbami z zakresu 1-50 <b>void losuj(float* 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 int* tab, int n)</b> (1 p.) | + | * Npisać funkcję obliczającą i '''zwracającą''' wartość średnią wczytanej próbki danych: <b>float srednia(const float* tab, int n)</b> (1 p.) |
- | * Napisać funkcję '''zwracającą''' odchylenie standardowe wartości średniej (jak policzyć odchylenie standardowe – patrz '''Uwaga 1''' poniżej) : | + | * Napisać funkcję wypisujaca na ekran odchylenie standardowe wartości średniej (jak policzyć odchylenie standardowe – patrz '''Uwaga 1''' poniżej) : |
- | <code>float odchStd(const int* tab, int n)</code> (1 pkt) | + | <code>void odchStd(const float* tab, int n)</code> (1 pkt) |
- | * Funkcja sortująca tablicę <b>void sortuj(int *tab, int n)</b>. Należy użyć sortowania przez wstawianie. (1 pkt) | + | * Funkcja sortująca tablicę <b>void sortuj(float *tab, int n)</b>. Należy użyć sortowania przez wstawianie. (1 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 58: |
| <b>Dodatkowe:</b> | | <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>. | + | * Funkcja wpisująca dane z pliku do tablicy <b>void wpisz(float* tab, int n, const char* nazwa_pliku)</b>. |
| + | Przykladowy plik: [http://www.if.pw.edu.pl/~lgraczyk/PP2016/lab05/wzrost.txt plik]. |
Latest revision as of 13:35, 11 April 2017
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 N).
- Stworzyć alokowaną dynamicznie tablicę tablica (ilość elementów w tablicy powinna zostać pobrana z klawiatury). Tablica powinna zostać w całości zainicjowana wartością 0.
- Napisać funkcję void hello() wypisująca na ekranie napis "Program prezentujący działania na ciągu liczb!". (0.5 pkt)
- Napisać funkcję wypisującą tablicę void wypisz(const float* tab, int n). (0.5 pkt)
- Napisać funkcję wypełniającą tablicę losowymi liczbami z zakresu 1-50 void losuj(float* tab, int n) (1 pkt)
- Npisać funkcję obliczającą i zwracającą wartość średnią wczytanej próbki danych: float srednia(const float* tab, int n) (1 p.)
- Napisać funkcję wypisujaca na ekran odchylenie standardowe wartości średniej (jak policzyć odchylenie standardowe – patrz Uwaga 1 poniżej) :
void odchStd(const float* tab, int n)
(1 pkt)
- Funkcja sortująca tablicę void sortuj(float *tab, int n). Należy użyć sortowania przez wstawianie. (1 pkt)
Sortowanie przez wstawianie (ang. Insert Sort, Insertion Sort) - 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.
Schemat działania algorytmu (za wikipedia)
1. Utwórz zbiór elementów posortowanych i przenieś do niego dowolny element ze zbioru nieposortowanego.
2. Weź dowolny element ze zbioru nieposortowanego.
3. Wyciągnięty element porównuj z kolejnymi elementami zbioru posortowanego póki nie napotkasz elementu równego lub elementu większego (jeśli chcemy otrzymać ciąg niemalejący) lub nie znajdziemy się na początku/końcu zbioru uporządkowanego.
4. Wyciągnięty element wstaw w miejsce gdzie skończyłeś porównywać.
5. Jeśli zbiór elementów nieuporządkowanych jest niepusty wróć do punkt 2.
Pseudokod sortowania przez wstawianie sortujący tablicę A:
for i = 1 to length(A) - 1
x = A[i]
j = i
while j > 0 and A[j-1] > x
A[j] = A[j-1]
j = j - 1
end while
A[j] = x
end for
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;
Uwaga 1! Odchylenie standardowe wartości średniej:
wzór
Aby policzyć pierwiastek z liczby używamy funkcji sqrt
(dla typu double
; lub jej wariantu sqrtf
dla typu <code?float</code>):
double sqrt (double x);
float sqrtf (float x);
Należy dołączyć bibliotekę: math.h
Do polecenia gcc
dokladamy dodatkowo flagę -lm
Obowiązkowo:
- Zrozumienie, analiza treści, projekt programu + poprawność i estetyka kodu.
- Należy pamiętać o zwalnianiu pamięci dla dynamicznie zaalokowanej tablicy.
Dodatkowe:
- Funkcja wpisująca dane z pliku do tablicy void wpisz(float* tab, int n, const char* nazwa_pliku).
Przykladowy plik: plik.