May 1, 2025, Thursday, 120

PP 2017 Kolokwium 1

From Łukasz Graczykowski

(Difference between revisions)
Jump to: navigation, search
(Created page with "Proszę napisać program, który wczyta do tablicy typu double wyniki pomiaru czasu przebiegnięcia maratonu (w minutach) przez zawodników. Następnie, po utworzeniu tablicy, u...")
 
(40 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.  
+
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]
-
1. Wpisanie danych  do tablicy
+
* Przykładowy program: [http://www.if.pw.edu.pl/~lgraczyk/PP2017/kol1/program program]
-
2. Wypisanie zadanej liczby tablicy na ekran
+
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):
-
3. Wypisanie największej wartości z tablicy na ekran
+
* Wypisanie najlepszego czasu
-
4. Wypisanie najmniejszej wartości z tablicy na ekran
+
* Wypisanie najgorszego czasu
-
5. Dodanie podanej przez użytkownika liczby do każdego elementu tablicy
+
* Wypisanie średniego czasu uzyskanego przez wszystkich zawodników
-
6. Zakończenie programu.
+
* Wypisanie zadanej liczby najlepszych wynikow (wymagana posortowana tablica)
-
Program powinien działać w pętli do momentu podania przez użytkownika opcji 6 (lub dowolnej innej niż 1-5).
+
* ('''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>
 +
'''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):
-
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).
+
<html>
 +
<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">
 +
</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
-
Etapy rozwiązania:
+
'''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>
-
Instrukcje preprocesora i funkcja main().
+
<br>
-
Wczytanie z klawiatury rozmiaru tablicy.
+
Na koniec wysyłamy program na mój adres e-mail: [mailto:lgraczyk@if.pw.edu.pl lgraczyk@if.pw.edu.pl]
-
Stworzenie tablicy o podanym rozmiarze i ustawienie domyślnych wartości na 0. 0.5 pkt.
+
<!--
-
Stworzenie menu użytkownika. 1 pkt.
+
FILE *plik = fopen(nazwa_pliku,"r"); //otwarcie pliku
-
Wprowadzenie liczb do tablicy. 0.5 pkt
+
if(!plik) //sprawdzy, czy sie otworzyl
-
Wypisanie tablicy na ekran. 0.5 pkt.
+
  {
-
Znalezienie najmniejszej i największej wartości w tablicy i wypisanie ich na ekran. 1 pkt.
+
    printf("Nie moge odczytac pliku %s!\n",nazwa_pliku);
-
Dodanie podanej z klawiatury liczby do każdego elementu tablicy. 0.5 pkt
+
    return 0;
-
Działanie programu w pętli i opcja kończąca program. 1 pkt.
+
  }
-
Obowiązkowo:
+
int rozmiar = 0;
-
Zrozumienie i analiza treści zadania, poprawność językowa, estetyka kodu.
+
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