May 1, 2025, Thursday, 120

C/Zad5 2016

From MJanik

(Difference between revisions)
Jump to: navigation, search
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>.
 +
 +
-->

Revision as of 08:38, 11 April 2017