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

Базы даных

11.06.2009, 01:05. Показов 1083. Ответов 5
Метки нет (Все метки)

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

примерно вышло вот это:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
Program Help;
 
 uses
     crt;
 type
    StTerm=string[20];
    StOpr=string[80];
    Termin=record
             Term:StTerm;
             Opr:StOpr;
           end;
 var
  TerminFile:file of Termin;
  Work:Termin;
  Vid:byte;
  End_Menu: boolean;
  Name : String;
  N : longint;
 
 procedure AddRec;
  begin
   Writeln ('Ввод записи №',FilePos(TerminFile)+1);
   with Work do
   begin
    write('Введите термин');
    readln(Term);
    Write ('Введите определение');
    readln (Opr);
    write (TerminFile,Work);
   end;
  end;
 
 procedure OutputRec;
   begin
    read(TerminFile, work);
    with work do
      begin
        write('запись №', FilePos(TerminFile), ' : ');
        writeln(Term,' - ', Opr);
      end;
   end;
 
 Procedure UpdateRec;
   var
      NumRec:longint;
  begin
   Assign(TerminFile,Name);
   {$I-}
   Reset(TerminFile);
   {$I+}
   if IOresult=0 then
    begin
     Write('*Введите номер изменяемой записи');
     Readln (NumRec);
       if NumRec > N then
          Begin
             Seek(TerminFile,NumRec-1);
             writeln('Старое значение записи');
             OutputRec;
             Seek(TerminFile,NumRec-1);
             writeln('задаем новое значение');
             AddRec;
             Close(TerminFile);
          end
       else
        WriteLn('нет такой записи');
       end
   else
    writeln('нет файла помощи');
  end;
 
  procedure addrectoend;
  begin
  assign(TerminFile, name);
  {$I-}
  reset(TerminFile);
  {$I+}
  if ioresult = 0 then
       begin
         seek(TerminFile, FileSize(TerminFile));
         addrec;
         Writeln('в базе', filesize(TerminFile), 'записей');
         N := FileSize(TerminFile);
         writeln(N);
         close(TerminFile);
       end
  else
    writeln('нет файла помощи');
  end;
 
  procedure findfio;
  var
    TerminFile: file of Termin;
    Work: Termin;
    Maska: stTerm;
    rez_find: boolean;
    countrec: integer;
  begin
    assign(TerminFile, Name);
    reset(TerminFile);
    if ioresult = 0 then
      begin
        write('введите термин для поиска');
        readln(maska);
        rez_find:=false;
        countrec:=0;
        while (not eof(TerminFile)) do
          begin
            read(TerminFile, work);
               with work do
                 if pos(maska, term) <> 0 then
                    begin
                      rez_find:=true;
                      inc(countrec);
                      write('запись№', FilePos(TerminFile), ' : ');
                      writeln(term, ' - ', Opr);
                    end;
               end;
            if rez_find then
               writeln('такой термин упоминается', maska, '=', countrec, 'раз')
            else
               writeln('нет термина', maska);
       close(TerminFile);
       end
       else
       writeln('нет файла с базой данных');
  end;
 
 begin
  Name := 'TERMIN.TXT';
  ClrScr;
  End_Menu:=false;
 repeat
  writeln('*** XXXXXXXXXXXXXXXXXXXXXXXXXXX ***');
  writeln('1 - поиск');
  writeln('2 - *изминение');
  writeln('3 - добавление*');
  writeln('0 - выход');
  writeln('выберете нужную цифру');
  readln(Vid);
  case Vid of
   1 : FindFio;
   2 : UpdateRec;
   3 : AddRecToEnd;
   0 : End_Menu:=True;
  end;
  writeln('для продолжения нажмите  Enter');
  readln;
  ClrsCR
 UNTIL End_Menu;
 end.
но тут вводит/выводит только одну строку а надо 5 или меньше....

Добавлено через 4 часа 25 минут 34 секунды
немного привел код впорядок...
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
Program Help;
 
 uses
     crt;
 type
    StTerm = string[20];
    StOpr = string[80];
    Termin = record
               Term:StTerm;
               Opr:StOpr;
             end;
 var
  TerminFile : file of Termin;
  Work : Termin;
  Zifra : byte;
  EndMenu : boolean;
  Name : String[12];
 
 procedure AddRec;
  begin
   Writeln ('‚¢®¤ §*¯¨á¨ ü ',FilePos(TerminFile)+1);
   with Work do
   begin
    Write ('‚¢¥¤¨â¥ â¥à¬¨* : ');
    ReadLn (Term);
    Write ('‚¢¥¤¨â¥ ®¯¨á**¨¥ : ');
    readln (Opr);
    write (TerminFile,Work);
   end;
  end;
 
 procedure OutputRec;
   begin
    Read(TerminFile, Work);
     with Work do
      begin
        write('‡*¯¨áì ü', FilePos(TerminFile), ' : ');
        writeln(Term,' - ', Opr);
      end;
   end;
 
 Procedure UpdateRec;
   var
      NumRec:longint;
  begin
   Assign(TerminFile,Name);
   {$I-}
   Reset(TerminFile);
   {$I+}
   if IOresult=0 then
    begin
     Write('**¦¬¨â¥ *®¬¥à ¨§¬¥*塞®© §*¯¨á¨');
     ReadLn (NumRec);
     Seek(TerminFile,NumRec-1);
     WriteLn('--áâ*஥ §**ç¥*¨¥ §*¯¨á¨--');
     OutputRec;
     Seek(TerminFile,NumRec-1);
     WriteLn('‡*¤*¥¬ *®¢®¥ §**ç¥*¨¥ ',NumRec,'-®© §*¯¨á¨');
     AddRec;
     Close(TerminFile);
    end
   else
    WriteLn('”*©« á ¡*§®© ¤***ëå *¥ **©¤¥*. Ž¡à*â¨â¥áì §* ¯®¬®éìî ª à*§à*¡®â稪ã');
  end;
 
  procedure AddRecToEnd;
  begin
  Assign(TerminFile, Name);
  {$I-}
  Reset(TerminFile);
  {$I+}
  if ioresult = 0 then
       begin
         seek(TerminFile, FileSize(TerminFile));
         addrec;
         Writeln('’¥¯¥àì ¢ ¡*§¥ ¤***ëå ', filesize(TerminFile), ' â¥à¬¨*(*,®¢)');
         close(TerminFile);
       end
  else
    writeln('&#141;¥â ä*©«* ¯®¬®é¨ ** ¤¨áª¥. ‡* ¯®¬®éìî ®¡à*â¨â¥áì ª à*§à*¡®â稪ã');
  end;
 
  procedure FindTerm;
  var
    TerminFile: file of Termin;
    Work: Termin;
    Maska: stTerm;
    RezFind: boolean;
    CountRec: integer;
  begin
    Assign(TerminFile, Name);
    {$I-}
    Reset(TerminFile);
    {$I+}
    if IoResult = 0 then
      begin
        Write('‚¢¥¤¨â¥ â¥à¬¨* ¤«ï ¯®¨áª*');
        ReadLn(maska);
        RezFind:=false;
        CountRec:=0;
        while (not Eof(TerminFile)) do
            begin
              Read(TerminFile, work);
                 with Work do
                     if pos(maska, term) <> 0 then
                          begin
                             RezFind:=true;
                             Inc(CountRec);
                             Write ('‡*¯¨áì ü', FilePos(TerminFile), ' : ');
                             WriteLn (term, ' - ', Opr);
                          end;
            end;
        if RezFind then
            writeln('’*ª®© â¥à¬¨* 㯮¬¨**¥âáï ', maska, '=', countrec, 'à*§')
        else
            writeln('&#141;¥â â*ª®£® â¥à¬¨** ', maska);
      close(TerminFile);
      end
    else
       writeln('&#141;¥â ä*©«* ¯®¬®é¨ ** ¤¨áª¥. ‡* ¯®¬®éìî ®¡à*â¨â¥áì ª à*§à*¡®â稪ã');
  end;
 
 begin
  Name := 'Text.txt';
  ClrScr;
  EndMenu:=false;
 repeat
  Writeln (' ');
  WriteLn ('’¥ªáâ ¯®¬®é¨ ¤«ï *¥ª®â®à®© ¯à®£à*¬¬ë' :40);
  WriteLn ('1 - &#143;®¨áª *ã¦*®£® â¥à¬¨**' :35);
  WriteLn ('2 - ˆ§¬¥*¥*¨âì â¥à¬¨*':31);
  WriteLn ('3 - „®¡*¢¨âì â¥à¬¨*':29);
  WriteLn ('0 - ‚ë室':19);
  Write ('‚ë¡¥à¥â¥ *ã¦*ãî æ¨äàã : ' :25);
  readln(Zifra);
  case Zifra of
   1 : FindTerm;
   2 : UpdateRec;
   3 : AddRecToEnd;
   0 : EndMenu:=True;
  end;
  WriteLn ('„«ï ¯à®¤®«¦¥*¨ï **¦¬¨â¥ Enter');
  ReadLn;
  ClrsCR
 UNTIL EndMenu;
 end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2009, 01:05
Ответы с готовыми решениями:

Динамическая структура даных
Дан список случайных целых чисел. Переверните список, т.е. расставьте все числа в обратном порядке. Пожалуйста помогите:)

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

Составить программу с процедурой ввода даных ромба для вычисления периметра и площади
1. Дан файл F, компоненты которого являются действительными числами. Число компонент файла кратно 2-м. Получить в файле Y наибольшее из...

5
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.06.2009, 11:05
выводит только одну строку а надо 5 или меньше..
Естественно, string[80] это 1 строка, а если надо больше, то это
array[1..5] of StOpr;
При вводе каждая строка записывается в свою ячейку массива.
Кстати в условии вроде фигурирует линейный список, а что-то совсем "галочек" не видно.
0
0 / 0 / 0
Регистрация: 07.06.2009
Сообщений: 9
11.06.2009, 13:11  [ТС]
просто мне слова линейный список ни чего не говорят....(((
огромная просьба объяснить что такой линейные списки и с чем их едят))
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.06.2009, 13:19
Если Вы этого не знаете, то в 2х словах Вам никто не объяснит, это надо книгу почитать, на худой конец поищите инфу по этому вопросу в Гугле. Вы будете очень "обрадованы", узнав что это такое.
0
0 / 0 / 0
Регистрация: 07.06.2009
Сообщений: 9
11.06.2009, 17:44  [ТС]
Как сделать это в этой программе.....
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
11.06.2009, 17:47
2 варианта, либо молча, либо в платный раздел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.06.2009, 17:47
Помогаю со студенческими работами здесь

Ввод даных
Здравствуйте,можно ли сделать так,что бы ввод данных с клавиатуры был не обязателен? Например: uses crt; var a:string begin ...

Типы даных
Помогите с задачей, что не так? Program ketsea; uses crt; type Angajat = record np:string; zar:real; end; listdeplata = array...

Тест на скорость обработки масива даных
вот сама програма program sort; uses Crt, Dos; const n=10000; n2=20; type Item= Integer; Items= array of item; var

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

Обробка текстовых даных
Создайте пожалуйста програму. 1. Подсчитать количество слов в предложении, состоящих из заданного количества букв 2. Найти в введенном...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Вот уже год прошел, как у меня домен в reg.ru ...
Etyuhibosecyu 16.04.2026
И ничего они мне не сделали. Если отвязать карту, никакие услуги они не навяжут. Я бы с радостью продлил еще на два года, чтобы не мучиться с временным доменом и меня уже знали по red-star-soft. com,. . .
Знаешь почему 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. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru