Zadanie 2 powrót

Napisać skrypt pt. zadanie2


Skrypt przyjmuje 2 lub 3 parametry

./zasanie2 BAZA_MODELI DOBRE_MODELE [ wybrane_modele ]

Plik BAZA_MODELI zawiera w każdej linijce kilka liczb, taki zbiór liczb nazywamy modelem. Czyli każdy model to jedna linijka, a numer modelu to numer linijki.

Niektóre modele sa źle policzone. Objawia się to tym, że zamiast liczby w danym miejscu, pojawia się ciąg kilku gwiazdek, np. *****, lub ciąg: "nan".

Do pliku DOBRE_MODELE mamy wypisać numery tych przejrzanych modeli, które są dobre.

W drugiej kolumnie pliku DOBRE_MODELE ma się znaleźć wartość szóstej liczby z danego modelu (nazwijmy ją Chi2).

W trzeciej kolumnie pliku DOBRE_MODELE ma się znaleźć długość linijki zawierającej dany model.


W trakcie działania skryptu, do pliku wypisywane są dobre modele, a numery złych modeli muszą być wypisane na ekran, jako informacja dla użytkownika.

Taką operację nazwiemy weryfikacją modelu.

Gdy podane są tylko dwa argumenty, program przeprowadza weryfikacje wszystkich modeli z bazy modeli. Trzeci, opcjonalny argument jest plikiem zawierającym listę modeli, które chcemy zweryfikować. Lista w każdej linijce ma numer interesującego nas modelu, oraz drugą liczbę (nieistostną dla zadania).

Jeśli podana jest lista wybranych modeli, przeprowadzamy weryfikacje tylko tych z listy.


Program wywołany z błędną liczbą argumentów musi wypisywać informację o sposobie użycia, i końcyć pracę.

Na początku działania, program musi poinformować użytkownika co zamierza zrobić. Tzn. z którego pliku bierze bazę modeli. Do którego pliku zamierza wypisać dobre modele. I ile modeli zamierza przejrzeć

Należy sprawdzić, czy podane pliki z danymi istnieją. W przeciwnym przypadku wyjść z błędem.

Na końcu działania, skrypt ma wypisać liczbę dobrych i złych modeli, oraz wszystkich które przejrzał.


Po dokonaniu weryfikacji wszystkich zadanych modeli, program pyta się czy posortować wynikowy plik.

wskazówka dla tcsh:

  echo -n "Czy posortować dobre modele(t/n)? "
  set odpowiedz=$<

wskazówka dla bash:

  echo -n "Czy posortować dobre modele? "
  select odpowiedz in "t" "n"
  do
    echo "Odpowiedziales:" $odpowiedz
    break
  done

Jeśli odpowiedzią jest "t", wtedy plik wynikowy z dobrymi modelami powinien zostać posortowany po Chi2


Przykład użycia:

./zadanie2 dane/models.in dane/models.out – do pliku 'dane/models.out' wypisze numery i Chi2 wszystkich dobrych modeli zawartych w pliku 'dane/models.in'
./zadanie2 modele.dat wynik/modele_dobre.dat wybrane_modele.dat – do pliku 'wyniki/modele_dobre.dat' wypisze numery i Chi2 wybranych modeli, których numery są podane w pliku wybrane_modele.dat'
Autor: Jan Skowrona