Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для J.J.
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 5

Сортировка структуры из текстового файла. Borland C для DOS.

24.05.2011, 23:23. Показов 2449. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста с решением задачи: необходимо создать структуру, записать ее в текстовый файл, а затем считать эти данные и отсортировать их по названию города (location), а также, по количеству дней (duration). С возможностью реализации на Borland C для DOS. Заранее спасибо.

Ниже указываю текст программы с реализованными частями задачи: объявление структуры, введение данных в текстовый файл, считывание данных из текстового файла и выведение их на экран.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
 
//объявление структуры
struct bureau
{
char country[15],location[15],type[10];
int duration;
};
bureau b;
 
//запись в текстовый файл
void input (FILE *in)
{int i=0;
in=fopen("base.txt","w");
do
{
printf("Country & Location ");
scanf("%s %s",b.country,b.location);
printf("Type & duration ");
scanf("%s %d",b.type, &b.duration);
fprintf(in,"%s %s %s %d\n",b.country,b.location,b.type,b.duration);
i++;
puts("To continue [y/n]?");
}
while (getch()!='n');
fcloseall();
}
 
//считывание из текстового файла
void output (FILE *in)
{
char c[80];
clrscr();
in=fopen("base.txt","r");
while(!feof(in))
{ fgets (c,80,in);
printf("%s \n",c);
}
fcloseall();
}
 
int main(void)
{FILE *in;
clrscr();
input(in);
clrscr();
output(in);
getch();
return 0;
}
Вот содержимое файла base.txt:
UK London Tour 5
Ukraine Lviv Tour 10
USA New-York Tour 3
Russia Moscow 8
USA Washington Tour 2


Добавлено через 1 час 21 минуту
вверх

Добавлено через 2 часа 35 минут
вверх
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.05.2011, 23:23
Ответы с готовыми решениями:

Какая версия Borland для MS-DOS 6.22?
Подскажите, какая версия Борланда с/с++ ставится на чистый DOS? ставил Borland 3.1, при установке он требует указать папку Windows. При...

Создание текстового файла в DOS кодировке
Плиз хелп. Возникла проблемка при создании текстового файла. На выходе он должен быть в Dos кодировке а получается в ACSI WIn. Может есть...

преобразование текстового файла из русской кодировки Dos
как преобразовать текстовый файл из русской кодировки Dos я себе даже представить не могу.. помогите

3
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
25.05.2011, 08:59
для сравнения строк используется strcmp()
нужно создать массив структур
загрузить в него данные из файла
отсортировать массив функцией

можно использовать функцию qsort(), для которой нужно написать небольшую функцию сравнения, основанную на strcmp()
а можно написать свою функцию, где напрямую использовать strcmp()
1
 Аватар для J.J.
0 / 0 / 0
Регистрация: 24.05.2011
Сообщений: 5
29.05.2011, 20:45  [ТС]
accept, спасибо.
вот только не знаю, как считать данные структуры из файла и записать их в массив

Добавлено через 5 часов 42 минуты
вверх
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
30.05.2011, 02:53
UK London Tour 5

C
1
2
3
4
5
6
7
8
9
10
    struct bureau b;
    struct bureau arr[10];
    int asize = 0;
    
    while(fgets(line, sizeof line, ifp) != NULL)
        if (sscanf(line, "%s %s %s %d",
                   b.country, b.location,
                   b.type, &b.duration) == 4
         && asize < 10)
            arr[asize++] = b;
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    struct bureau arr[10];
    int asize;
    struct bureau b;
    int retval;
    
    asize = 0;
    while(fgets(line, sizeof line, ifp) != NULL) {
        retval = sscanf(line, "%s %s %s %d",
                        b.country, b.location,
                        b.type, &b.duration);
        if (retval == 4 && asize < 10)
            arr[asize++] = b;
        else if (retval != 4) {
            fprintf(stderr, "error: incorrect data\n");
            break;
        } else {
            fprintf(stderr, "error: excess data\n");
            break;
        }
    }
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.05.2011, 02:53
Помогаю со студенческими работами здесь

Сохранение текстового файла с формате DOS\Windows
Добрый день. Возникла необходимость сохранять файл с формате DOS\Windows, а сохранение происходит в формате UNIX. Как осуществить...

Составить процедуру преобразования текстового файла в кодировку DOS
Дан текстовый файл FileIn, записанный в кодировке Windows. Составить процедуру ANSI_ASCII(FileIn, FileOut) преобразования текстового ...

Загрузка данных из Excel и текстового файла в StringGrid (Borland Builder C++)
Здравствуйте! Не подскажите как осуществить загрузку данных из Excel и текстового файла в StringGrid?

написать программу, выполняющую преобразование текстового файла из русской кодировки DOS в кодировку WINDOWS
в общем кто может помочь написать программу, выполняющую преобразование текстового файла из русской кодировки DOS в кодировку WINDOWS ...

Создать отчет для текстового редактора (DOS)
Есть база, есть отчет. Отчет печатается на лазерном принтере. Все бы ничего, но большой расход бумаги для принтера. По-этому...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru