![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Agnus:Dei |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Продвинутые Сообщений: 4 Регистрация: 3.4.2008 Город: Казань Вы: студент ![]() |
Задача следующая:
Дан файл, содержащий сведения о сотрудниках отдела учреждения. Структура записи файла: фамилия, имя, отчество сотрудника, год рождения, должность, домашний телефон, домашний адрес. Записи в файле не упорядочены. Написать программу которая: - упорядочивает записи в алфавитном порядке, используя список, и записывает их в новый файл; - печатает список сотрудников (в алфавитном порядке), у которых есть домашний телефон, выводить только ф.и.о. и номер телефона. Вопрос - как упорядочить записи в алфавитном порядке и записать их в новый файл? Последний раз садился за TC в прошлом году, ничего не помню - помогите, пожалуйста. |
creer |
![]()
Сообщение
#2
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 121 Регистрация: 28.10.2007 Город: Екатеринбург Учебное заведение: УГТУ-УПИ Вы: студент ![]() |
Давайте Вы напишете как читаете из файла, а как отсортировать полученные данные я покажу.
|
Agnus:Dei |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Продвинутые Сообщений: 4 Регистрация: 3.4.2008 Город: Казань Вы: студент ![]() |
Код void Alphabet(FILE *fin) { char fname[13]; /* имя выходного файла */ FILE *fout; /* ссылка на выходной файл */ struct employee tz; /* текущая запись файла */ puts ("\nВведите имя выходного файла"); gets (fname); fout = fopen(fname,"w"); rewind(fin); while (fgets((char *)&tz,sizeof(struct employee),fin)) [тут сортировка] fclose (fout); puts("Запись в файл завершена"); } Как-то так... |
creer |
![]()
Сообщение
#4
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 121 Регистрация: 28.10.2007 Город: Екатеринбург Учебное заведение: УГТУ-УПИ Вы: студент ![]() |
Хм. Я думал что Вы все элементы из файла считываете, скажем, в массив. Тогда можно было бы применить qsort().
Если считывать по одному, то это усложнит сортировку. |
Agnus:Dei |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Продвинутые Сообщений: 4 Регистрация: 3.4.2008 Город: Казань Вы: студент ![]() |
Ох, подскажите пожалуйста тогда как это сделать - я это-то с трудом из себя выдавил, абсолютно всё забыл.
|
creer |
![]()
Сообщение
#6
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 121 Регистрация: 28.10.2007 Город: Екатеринбург Учебное заведение: УГТУ-УПИ Вы: студент ![]() |
Посмотрите здесь. Там подобный пример, но попроще.
|
Agnus:Dei |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Продвинутые Сообщений: 4 Регистрация: 3.4.2008 Город: Казань Вы: студент ![]() |
Спасибо большое =)
|
Julia |
![]()
Сообщение
#8
|
Ассистент ![]() ![]() ![]() ![]() Группа: Julia Сообщений: 593 Регистрация: 23.2.2007 Город: Улан-Удэ Учебное заведение: БГУ Вы: преподаватель ![]() |
Хм. Я думал что Вы все элементы из файла считываете, скажем, в массив. Тогда можно было бы применить qsort(). Если считывать по одному, то это усложнит сортировку. Считывая данные из файла в массив, вы тем самым переносите их из внешней памяти в оперативную. Лучше этого не делать. |
creer |
![]()
Сообщение
#9
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 121 Регистрация: 28.10.2007 Город: Екатеринбург Учебное заведение: УГТУ-УПИ Вы: студент ![]() |
Считывать данные с жесткого диска все равно придется. Если считывать по одной записи, то это усложнит и крайне замедлит сортировку.
На одну запись не потребуется более 512 байт. Значит, полностью перенеся файл в оперативную память, мы займем, имея 10 000 записей, всего 5 Мегабайт. |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 19:50 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru