PO2017: Wejściówka na lab.7

Napisz program wczytujący z pliku listę rekordów (rekord to kolekcja kilku dowolnych wartości, każda ściśle określonego typu, występujących w ustalonej, zawsze tej samej kolejności). Wczytywane rekordy składają się z trzech pól i są zapisane w wierszach pliku tekstowego; każdy wiersz zawiera kolejno: nr indeksu studenta, nazwisko i ocenę, które rozdzielone są znakiem spacji. Typ danych do przechowywania jednego rekordu ma następującą strukturę:

struct student {
        int nr_indeksu;
        char nazwisko[30];
        float ocena;
        struct student *nast;
        struct student *poprz;
};

W funkcji main pobierz od użytkownika nazwę pliku z danymi, otwórz ten plik w trybie do odczytu, a następnie wczytaj zawartość pliku do listy dynamicznej dwukierunkowej. Po wczytaniu każdego kolejnego wiersza dodawaj nowy element w takim miejscu listy, aby pozostawała uporządkowana rosnąco względem nr indeksu studenta. W trakcie wczytywania program powinien wypisywać na ekranie aktualnie odczytywane wartości. Przyjmij, że dane w pliku są zawsze poprawne, tj. wiersz zawsze zawiera trójkę prawidłowych napisów w prawidłowej kolejności.

Po zakończeniu czytania zamknij plik i wypisz na ekranie zawartość listy (rekordy powinny być już wtedy posortowane).

Następnie usuń z niej elementy reprezentujące studentów, którzy mają ocenę niższą niż 4.

Na koniec pobierz od użytkownika nazwę pliku do zapisu, otwórz plik o podanej nazwie w trybie do zapisu i zapisz do niego zawartość listy dynamicznej (stan już po usunięciu elementów) w takim samym formacie, jak w pliku wejściowym, tj. każdy wiersz zawiera nr indeksu studenta, nazwisko i ocenę, które rozdzielone są znakiem spacji. Po zakończeniu zapisywania zamknij plik i zakończ działanie programu.

Przygotuj odpowiedni plik tekstowy z prawidłowymi danymi wejściowymi i umieść go we właściwym katalogu. Przygotuj dane w pliku tak, aby:

  1. rekordy reprezentujące studentów z oceną poniżej 4 były przemieszane z rekordami studentów z oceną 4 i wyższą niż 4 i aby znalazły się na początku, w środku i na końcu pliku,
  2. numery studentów w kolejnych wierszach nie były uporządkowane rosnąco.