From Łukasz Graczykowski
(Difference between revisions)
|
|
(30 intermediate revisions not shown) |
Line 1: |
Line 1: |
- | Proszę napisać program, który wczyta do tablicy typu double wyniki pomiaru czasu przebiegnięcia maratonu (w minutach) przez zawodników.<br> | + | Proszę napisać program, który wczyta do tablicy typu double wyniki pomiaru czasu uzyskane przez zawodników PZU Maratonu Warszawskiego 2016 (w minutach). |
- | Następnie, po utworzeniu tablicy, ukazuje się menu użytkownika, w którym do wyboru powinny być następujące opcje: | + | * Plik z wynikami: [http://www.if.pw.edu.pl/~lgraczyk/PP2017/kol1/wyniki.txt wyniki.txt] |
- | * Wpisanie danych do tablicy<br> | + | * Przykładowy program: [http://www.if.pw.edu.pl/~lgraczyk/PP2017/kol1/program program] |
- | * Wypisanie zadanej liczby tablicy na ekran<br> | + | Następnie, po utworzeniu tablicy '''i jej posortowaniu''' (patrz '''Uwagi 1 i 2'''), użytkownikowi ukazuje się menu użytkownika, w którym do wyboru powinny być następujące opcje (menu wyświetla się za każdym razem po zrealizowaniu danej opcji): |
- | * Wypisanie największej wartości z tablicy na ekran<br> | + | * Wypisanie najlepszego czasu |
- | * Wypisanie najmniejszej wartości z tablicy na ekran<br> | + | * Wypisanie najgorszego czasu |
- | * Dodanie podanej przez użytkownika liczby do każdego elementu tablicy<br> | + | * Wypisanie średniego czasu uzyskanego przez wszystkich zawodników |
- | * Zakończenie programu.<br> | + | * Wypisanie zadanej liczby najlepszych wynikow (wymagana posortowana tablica) |
- | Program powinien działać w pętli do momentu podania przez użytkownika opcji kończącej progeam.<br> | + | * ('''Dodatkowo''') Wypisanie zadanej liczby najgorszych wynikow (wymagana posortowana tablica) |
| + | * Zakończenie programu |
| + | Program powinien działać w pętli do momentu podania przez użytkownika opcji kończącej program.<br> |
| <br> | | <br> |
- | '''Uwaga!''' Musimy dwa razy przeczytać plik tekstowy (najpierw by zliczyć ilość zawodników w celu zadeklarowania rozmiaru tablicy, następnie w celu jej wypełnienia).<br> | + | '''Uwaga 1!''' Musimy dwa razy przeczytać plik tekstowy (najpierw by zliczyć ilość zawodników w celu zadeklarowania rozmiaru tablicy, następnie w celu jej wypełnienia).<br> |
| + | <br> |
| + | '''Uwaga 2!''' Aby zrealizować wypisanie najlepszych i najgorszych wyników, musimy po wczytaniu tablicę '''posortować'''. Jak posortować tablicę? Pokazuje to poniższy przykład najprostszego algorytmu, tzw. "sortowanie bąbelkowe" (bubble sort): |
| | | |
| <html> | | <html> |
- | </table> | + | <embed src="http://eduinf.waw.pl/inf/alg/003_sort/flash/004_01.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="obj2" quality="AutoHigh" bgcolor="#ffffff" menu="false" height="200" width="250"> |
- | <p> </p>
| + | |
- | <h2 class="bl1">
| + | |
- | <a name="algorytm">Algorytm</a></h2>
| + | |
- | <table id="table67" style="border-collapse: collapse;" border="0"
| + | |
- | cellpadding="0" class="flow">
| + | |
- | <tr>
| + | |
- | <td>
| + | |
- | <object classid="clsid:D27CDB6E-AE6D-11CF-96B8-444553540000" id="obj2" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" border="0" height="200" width="250">
| + | |
- | <param name="movie" value="flash/003_01.swf">
| + | |
- | <param name="quality" value="AutoHigh">
| + | |
- | <param name="bgcolor" value="#ffffff">
| + | |
- | <param name="menu" value="false">
| + | |
- | <embed src="flash/003_01.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="obj2" quality="AutoHigh" bgcolor="#ffffff" menu="false" height="200" width="250">
| + | |
- |
| + | |
- | </object>
| + | |
- | </td>
| + | |
- | </tr>
| + | |
- | </table>
| + | |
- | | + | |
| </html> | | </html> |
| + | |
| + | Lista kroków (przykład dla n-elementowej tablicy):<br> |
| + | '''K01:''' Dla <code>j = 0,1,2,...,n-1</code>: wykonuj '''K02''' <br> |
| + | '''K02:''' Dla <code>i = 0,1,2,...,n-1</code>: jeśli <code>tablica[i] > tablica[i+1]</code>, to zamień <code>tablica[i]</code> z <code>tablica[i+1]</code><br> |
| + | '''K03:''' Zakończ |
| + | |
| + | '''Uwagi go stylu:''' Pamiętamy o wcięciach, nawiasach, i generalnie o uporządkowanym kodzie. Kod powinien być tak napisany, by był zrozumiały dla osoby go czytającej.<br> |
| + | <br> |
| + | Na koniec wysyłamy program na mój adres e-mail: [mailto:lgraczyk@if.pw.edu.pl lgraczyk@if.pw.edu.pl] |
| + | <!-- |
| + | FILE *plik = fopen(nazwa_pliku,"r"); //otwarcie pliku |
| + | if(!plik) //sprawdzy, czy sie otworzyl |
| + | { |
| + | printf("Nie moge odczytac pliku %s!\n",nazwa_pliku); |
| + | return 0; |
| + | } |
| + | int rozmiar = 0; |
| + | double wynik = 0; |
| + | while(fscanf(plik,"%lf",&wynik) != EOF) |
| + | { |
| + | rozmiar++; |
| + | } |
| + | |
| + | |
| + | printf("Ilosc zawodnikow to: %d\n",rozmiar); |
| + | double czas[rozmiar]; |
| + | fclose(plik); |
| + | |
| + | FILE *plik2 = fopen(nazwa_pliku,"r"); //otwarcie pliku |
| + | if(!plik2) //sprawdzy, czy sie otworzyl |
| + | { |
| + | printf("Nie moge odczytac pliku %s!\n",nazwa_pliku); |
| + | return 0; |
| + | } |
| + | int i = 0; |
| + | while(fscanf(plik2,"%lf",&wynik) != EOF) |
| + | { |
| + | czas[i] = wynik; |
| + | i++; |
| + | } |
| + | fclose(plik2); |
| + | --> |
Latest revision as of 19:02, 27 March 2017
Proszę napisać program, który wczyta do tablicy typu double wyniki pomiaru czasu uzyskane przez zawodników PZU Maratonu Warszawskiego 2016 (w minutach).
Następnie, po utworzeniu tablicy i jej posortowaniu (patrz Uwagi 1 i 2), użytkownikowi ukazuje się menu użytkownika, w którym do wyboru powinny być następujące opcje (menu wyświetla się za każdym razem po zrealizowaniu danej opcji):
- Wypisanie najlepszego czasu
- Wypisanie najgorszego czasu
- Wypisanie średniego czasu uzyskanego przez wszystkich zawodników
- Wypisanie zadanej liczby najlepszych wynikow (wymagana posortowana tablica)
- (Dodatkowo) Wypisanie zadanej liczby najgorszych wynikow (wymagana posortowana tablica)
- Zakończenie programu
Program powinien działać w pętli do momentu podania przez użytkownika opcji kończącej program.
Uwaga 1! Musimy dwa razy przeczytać plik tekstowy (najpierw by zliczyć ilość zawodników w celu zadeklarowania rozmiaru tablicy, następnie w celu jej wypełnienia).
Uwaga 2! Aby zrealizować wypisanie najlepszych i najgorszych wyników, musimy po wczytaniu tablicę posortować. Jak posortować tablicę? Pokazuje to poniższy przykład najprostszego algorytmu, tzw. "sortowanie bąbelkowe" (bubble sort):
Lista kroków (przykład dla n-elementowej tablicy):
K01: Dla j = 0,1,2,...,n-1
: wykonuj K02
K02: Dla i = 0,1,2,...,n-1
: jeśli tablica[i] > tablica[i+1]
, to zamień tablica[i]
z tablica[i+1]
K03: Zakończ
Uwagi go stylu: Pamiętamy o wcięciach, nawiasach, i generalnie o uporządkowanym kodzie. Kod powinien być tak napisany, by był zrozumiały dla osoby go czytającej.
Na koniec wysyłamy program na mój adres e-mail: lgraczyk@if.pw.edu.pl