Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //////////////////////////////////////////////////////////
- 3. (2 punkty - na zajęciach, lub 1 punkt - w domu)
- Plik zawiera listę studentów w formacie:
- Imię_1 Nazwisko_1 Numer_1 punkty inne informacje ...
- Imię_2 Nazwisko_2 Numer_2 punkty inne informacje ...
- Imię_3 Nazwisko_3 Numer_3 punkty inne informacje ...
- (itd.)
- Napisz w awku skrypt sumuj.awk sumujący punkty przyznane studentom. Studentów należy identyfikować według numeru w polu 3, i po każdym napotkanym wierszu dotyczącym danego studenta, sumować zebrane punkty.
- Po zakończeniu przetwarzania pliku wejściowego, należy wyświetlić listę studentów, wraz z sumaryczną liczbą punktów.
- Wskazówka: należy użyć tablic awka. Te tablice mogą być indeksowane dowolnymi danymi (np. numerami indeksu studentów) i nazywane są tablicami asocjacyjnymi. Warto przejrzeć kilka przykładów użycia tablic asocjacyjnych w awku.
- Wynikowy skrypt dołączony do raportu powinien zawierać czysty program awk wywoływany poleceniem awk -f sumuj.awk
- ==============================
- BEGIN{
- suma = 0
- }
- {
- suma += $4
- tab[$3] = $1 " " $2
- }
- END{
- print "Suma punktów: " suma
- for (i in tab)
- print tab[i]
- }
- ===============================
- ===============================
- Jan Kowalski 1 5 blabla
- Piotr Nowak 2 3 blabla
- Tomasz Michalik 3 2 blabla
- ===============================
- //////////////////////////////////////////////////////////
- 4. (2 punkty - w domu)
- Dla pliku danych z wynikami studentów jak w poprzednim zadaniu, napisz w awku skrypt sprawdzaj.awk do sprawdzenia zgodności imion i nazwisk. Jako identyfikator traktujemy numer w trzecim polu. Skrypt ma sprawdzać, czy każde kolejne wystąpienie wiersza z tym samym numerem ma imię i nazwisko (pierwsze dwa pola) takie samo jak poprzednio. Gdy tak jest, skrypt nie wyświetli nic na wyjściu. Jednak gdy napotkamy wiersz, z wcześniej już przetworzonym numerem, ale z różniącym się imieniem lub nazwiskiem, należy wyświetlić komunikat informacyjny, identyfikujący numer wiersza (zmienna NR w awk).
- Wynikowy skrypt dołączony do raportu powinien zawierać czysty program awk wywoływany poleceniem awk -f sprawdzaj.awk
- ==============================
- BEGIN{
- }
- {
- if ($3 in tab){
- if(tab[$3] != $1 " " $2){
- print $NR-1
- }
- }
- else{
- tab[$3] = $1 " " $2
- }
- }
- ===============================
- ===============================
- Jan Kowalski 1 5 blabla
- Piotr Nowak 2 3 blabla
- Tomasz Michalik 3 2 blabla
- Jan Nowacki 1 5 blabla
- ===============================
- ===============================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement