IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Как упорядочить в алфавитном порядке?, Turbo C
Agnus:Dei
сообщение 3.4.2008, 13:59
Сообщение #1


Новичок
*

Группа: Продвинутые
Сообщений: 4
Регистрация: 3.4.2008
Город: Казань
Вы: студент



Задача следующая:

Дан файл, содержащий сведения о сотрудниках отдела учреждения.
Структура записи файла: фамилия, имя, отчество сотрудника, год рождения, должность, домашний телефон, домашний адрес. Записи в файле не упорядочены.
Написать программу которая:
- упорядочивает записи в алфавитном порядке, используя список, и записывает их в новый файл;
- печатает список сотрудников (в алфавитном порядке), у которых есть домашний телефон, выводить только ф.и.о. и номер телефона.

Вопрос - как упорядочить записи в алфавитном порядке и записать их в новый файл?
Последний раз садился за TC в прошлом году, ничего не помню - помогите, пожалуйста.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
creer
сообщение 3.4.2008, 15:35
Сообщение #2


Студент
**

Группа: Продвинутые
Сообщений: 121
Регистрация: 28.10.2007
Город: Екатеринбург
Учебное заведение: УГТУ-УПИ
Вы: студент



Давайте Вы напишете как читаете из файла, а как отсортировать полученные данные я покажу.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Agnus:Dei
сообщение 3.4.2008, 17:20
Сообщение #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
сообщение 3.4.2008, 17:48
Сообщение #4


Студент
**

Группа: Продвинутые
Сообщений: 121
Регистрация: 28.10.2007
Город: Екатеринбург
Учебное заведение: УГТУ-УПИ
Вы: студент



Хм. Я думал что Вы все элементы из файла считываете, скажем, в массив. Тогда можно было бы применить qsort().
Если считывать по одному, то это усложнит сортировку.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Agnus:Dei
сообщение 3.4.2008, 18:42
Сообщение #5


Новичок
*

Группа: Продвинутые
Сообщений: 4
Регистрация: 3.4.2008
Город: Казань
Вы: студент



Ох, подскажите пожалуйста тогда как это сделать - я это-то с трудом из себя выдавил, абсолютно всё забыл.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
creer
сообщение 4.4.2008, 13:29
Сообщение #6


Студент
**

Группа: Продвинутые
Сообщений: 121
Регистрация: 28.10.2007
Город: Екатеринбург
Учебное заведение: УГТУ-УПИ
Вы: студент



Посмотрите здесь. Там подобный пример, но попроще.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Agnus:Dei
сообщение 4.4.2008, 21:35
Сообщение #7


Новичок
*

Группа: Продвинутые
Сообщений: 4
Регистрация: 3.4.2008
Город: Казань
Вы: студент



Спасибо большое =)
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Julia
сообщение 5.4.2008, 16:37
Сообщение #8


Ассистент
****

Группа: Julia
Сообщений: 593
Регистрация: 23.2.2007
Город: Улан-Удэ
Учебное заведение: БГУ
Вы: преподаватель



Цитата(creer @ 4.4.2008, 2:48) *

Хм. Я думал что Вы все элементы из файла считываете, скажем, в массив. Тогда можно было бы применить qsort().
Если считывать по одному, то это усложнит сортировку.

Считывая данные из файла в массив, вы тем самым переносите их из внешней памяти в оперативную. Лучше этого не делать.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
creer
сообщение 6.4.2008, 12:07
Сообщение #9


Студент
**

Группа: Продвинутые
Сообщений: 121
Регистрация: 28.10.2007
Город: Екатеринбург
Учебное заведение: УГТУ-УПИ
Вы: студент



Считывать данные с жесткого диска все равно придется. Если считывать по одной записи, то это усложнит и крайне замедлит сортировку.
На одну запись не потребуется более 512 байт. Значит, полностью перенеся файл в оперативную память, мы займем, имея 10 000 записей, всего 5 Мегабайт.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 27.4.2024, 15:52

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru