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

Базы даных

11.06.2009, 01:05. Показов 1056. Ответов 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
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
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
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
11.06.2009, 13:19
Если Вы этого не знаете, то в 2х словах Вам никто не объяснит, это надо книгу почитать, на худой конец поищите инфу по этому вопросу в Гугле. Вы будете очень "обрадованы", узнав что это такое.
0
0 / 0 / 0
Регистрация: 07.06.2009
Сообщений: 9
11.06.2009, 17:44  [ТС]
Как сделать это в этой программе.....
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
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
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru