May 1, 2025, Thursday, 120

PP 2017 Kolokwium 1

From Łukasz Graczykowski

(Difference between revisions)
Jump to: navigation, search
 
(7 intermediate revisions not shown)
Line 9: Line 9:
* ('''Dodatkowo''') Wypisanie zadanej liczby najgorszych wynikow (wymagana posortowana tablica)
* ('''Dodatkowo''') Wypisanie zadanej liczby najgorszych wynikow (wymagana posortowana tablica)
* Zakończenie programu
* Zakończenie programu
-
Program powinien działać w pętli do momentu podania przez użytkownika opcji kończącej progeam.<br>
+
Program powinien działać w pętli do momentu podania przez użytkownika opcji kończącej program.<br>
<br>
<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>
'''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>
Line 23: Line 23:
'''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>
'''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
'''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