Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 2
Регистрация: 26.01.2011
Сообщений: 96

Создание массива списков

05.07.2011, 00:58. Показов 3192. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть файл с базой данных "Жизнь Замечательных Людей". В ней список книг.
В одном из пунктов задания требуется:
"Хранящуюся в файле base1.dat базу данных "Жизнь замечательных людей" загрузить в оперативную память компьютера и построить индексный массив, упорядочивающий данные по фамилиям замечательных людей, используя метод Хоара."
Файл с базой и полный текст программы прилагается.

Делаю так:
Pascal
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
54
55
56
57
58
59
{Создание индексных массивов
Создается 2 массива:
IndxF - различные фамилии
IndxB - списки книг с фамилиями IndxF[i].
Преобразуем фамилию в строку для сортировки}
procedure MakeIndx;
var p,tmp:spis;
    WTitleFIO:string[20];               { фамилия замечательного человека }
    i,j,z:integer;
    ffind:boolean;
begin
  p:=head;
  NIndx:=0;                             { кол-во разных фамилий }
  while(p^.sl<>nil) do begin            { обхожу базу }
    j:=1;
    WTitleFIO:='';                      { считывание фамилии замечательного человека }
    for i:=1 to 2 do begin
        while(p^.data.titleFIO[j]<>#32) do begin
            j:=j+1;
        end;
        j:=j+1;
    end;
    while(p^.data.titleFIO[j]<>#32) do begin
        WTitleFIO:=WTitleFIO+p^.data.titleFIO[j];
        if j=32 then break;
    j:=j+1;
    end;                                { WTitleFIO - фамилия замечательного человека }
    ffind:=false;
    for z:=1 to NIndx do begin      { проверяем присутствует ли фамилия в массиве с фамилиями }
        if IndxF[z]=WTitleFIO then begin    { если присутствует } 
            ip:=IndxB[z];               { задействуем книг список соотв. фамилии z }
            while(ip^.sl<>nil) do begin { доходим до конца списка }
                ip:=ip^.sl;
            end;
            ipn:=ip;
            new(ip);
            ipn^.sl:=ip;
            ip^.sl:=nil;
            ip^.data:=p;                { заносим книгу в список }
            { IndxB[NIndx]:=ip; }           { заносим список книг в массив }
            ffind:=true;                { считаная фамилия уже присутствует в массиве }
            break;
        end;
    end;
    if (ffind=false) then
        begin
            NIndx:=NIndx+1;             { увеличиваем счетчик фамилий }
            IndxF[NIndx]:=WTitleFIO;    { заносим фамилию в массив }
            new(ip);
            ip^.sl:=nil;
            ip^.data:=p;
            IndxB[NIndx]:=ip;           { заносим список книг в массив }
        end;
    p:=p^.sl;
  end;
    writeln('Индексация завершена');
    writeln('Нажмите Enter для продолжения');
    readln;
end;
Проблема: фамилии заносятся по одному разу. Не могу разобраться, где что не так.

Структура записи базы:
Автоp: текстовое поле 12 символов
фоpмат <Фамилия>_<буква>_<буква>
Заглавие: текстовое поле 32 символа
фоpмат <Имя>_<Отчество>_<Фамилия>
Издательство: текстовое поле 16 символов
Год издания: целое число
Кол-во стpаниц: целое число
Вложения
Тип файла: 7z BASE1.DAT.7z (25.0 Кб, 19 просмотров)
Тип файла: 7z ZHZL.PAS.7z (3.6 Кб, 24 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.07.2011, 00:58
Ответы с готовыми решениями:

Копирование данных двумерного массива состоящего из списков в список списков.
Для нахождения МСТ (минимального остового дерева) написал функцию, которая принимает масив - гарф. private List&lt;Point&gt;...

Создание списков
Никак не могу решить задачку, подскажите кто знает,пжлст:cry: Список содержит названия городов России, области к которым они относятся, ...

создание списков
Помогите создать 3 списка подряд, которые будут открываться! заранее спасибо)

1
0 / 0 / 2
Регистрация: 26.01.2011
Сообщений: 96
05.07.2011, 01:34  [ТС]
Разобрался... Не в этом проблема...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.07.2011, 01:34
Помогаю со студенческими работами здесь

Создание списков в MS VC 2008
Создать 2 списка.Создать 3-й список,состоящий из положительных элементов двух первых списков.// spisok.cpp: определяет точку входа для...

Создание класса списков
Помогите пожалуйста создать класс списков, я не совсем понимаю как это сделать class Sotrudnic { ... }; class SotrList ...

Создание и обработка списков
Даны натуральное число n, действительные числа а1,…, a2n. Получить: a1*a2n+a2*a2n-1+an*an+1. Написать программу на С++

Создание двусвязных списков
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для...

Списки.Создание списков
Помогите с программой ,пожалуйста)Нужно составить список.Я вроде все правильно делаю а компилятор ругается на какую то фигню( #include...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru