May 1, 2025, Thursday, 120

C/Zad5 2016

From MJanik

(Difference between revisions)
Jump to: navigation, search
(Created page with "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>). ...")
 
(4 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>). 
+
<!--
-
 
+
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>).
-
<hr>
+
-
<1--
+
-
 
+
-
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>.
-->
-->

Latest revision as of 08:43, 11 April 2017