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

Проверьте код, пожалуйста

22.06.2019, 15:28. Показов 1451. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пожалуйста, помогите найти ошибку в этом коде, очень прошу.
Учусь только
Очень уж знать хочется, где накосячил.
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
Program SUBD;
 
Type lot=record
  con:string[20];
  tim:integer;
  agn:string[20];
  pri:integer;
  dop:string[50];
  end;
  tfile=file of lot;
  Var 
  f:tfile;
  k:byte;
  
  procedure tures(Var f:tfile);
  var a:lot;
  begin
 
  rewrite(f);
  Writeln('Данные тура:');
  With a do
  begin
  con:='Турция';
  Writeln('Страна: ',con);
  tim:=25;
  Writeln('Длительность: ',tim);
  agn:='Вокруг Света';
  Writeln('Турфирмa: ',agn);
  pri:=45000;
  Writeln('Цена: ',pri);
  dop:='Увлекательный тур.';
  Writeln(dop);
  end; 
  with a do
  begin
  con:='Кипр';
  Writeln('Страна: ',con);
  tim:=20;
  Writeln('Длительность: ',tim);
  agn:='Вояж Тур';
  Writeln('Турфирмa: ',agn);
  pri:=60000;
  Writeln('Цена: ',pri);
  dop:='Увлекательный тур.';
  Writeln(dop);
  end;
  with a do
  begin
  con:='Таиланд';
  Writeln('Страна: ',con);
  tim:=20;
  Writeln('Длительность: ',tim);
  agn:='Время путешествий';
  Writeln('Турфирмa: ',agn);
  pri:=50000;
  Writeln('Цена: ',pri);
  dop:='Увлекательный тур.';
  Writeln(dop);
  end;
  with a do
  begin
  con:='Тунис';
  Writeln('Страна: ',con);
  tim:=20;
  Writeln('Длительность: ',tim);
  agn:='Время путешествий';
  Writeln('Турфирмa: ',agn);
  pri:=55000;
  Writeln('Цена: ',pri);
  dop:='Увлекательный тур.';
  Writeln(dop);
  end;
  with a do
  begin
  con:='Кипр';
  Writeln('Страна: ',con);
  tim:=20;
  Writeln('Длительность: ',tim);
  agn:='Вояж Тур';
  Writeln('Турфирмa: ',agn);
  pri:=60000;
  Writeln('Цена: ',pri);
  dop:='Увлекательный тур.';
  Writeln(dop);
  end;
  with a do
  begin
  con:='Россия';
  Writeln('Страна: ',con);
  tim:=25;
  Writeln('Длительность: ',tim);
  agn:='Гелла';
  Writeln('Турфирмa: ',agn);
  pri:=23000;
  Writeln('Цена: ',pri);
  dop:='Увлекательный и экономный тур.';
  Writeln(dop);
  end;
  With a do
  begin
  con:='Турция';
  Writeln('Страна: ',con);
  tim:=30;
  Writeln('Длительность: ',tim);
  agn:='Гелла';
  Writeln('Турфирмa: ',agn);
  pri:=50000;
  Writeln('Цена: ',pri);
  dop:='Увлекательный тур.';
  Writeln(dop);
  end; 
  With a do
  begin
  con:='Кипр';
  Writeln('Страна: ',con);
  tim:=20;
  Writeln('Длительность: ',tim);
  agn:='Гольфстрим';
  Writeln('Турфирмa: ',agn);
  pri:=50000;
  Writeln('Цена: ',pri);
  dop:='Увлекательный тур.';
  Writeln(dop);
  end;  close(f);
  end;
  procedure findprice(Var f:file);
Var a:lot;
  fl:boolean;
  x,con,agn,dop:string;
  tim,pri,x1:integer;
  begin
  reset(f);
  Writeln('Введите название страны для поиска:');
  readln(x);
  if x<>'#' then 
  begin
  writeln('Введите нужный ценовой порог:');
  readln(x1);
  fl:=true;
  Writeln('Страна: ',con:20,'Длительность: ',tim:10,'Агенство: ',agn:20,'Цена: ',pri:10,'Дополнительно: ',dop:30);
  While NOT EOF(f) do
  Begin
  read(f,a);
  With a do 
  if x=con then
  if x1>=pri then
  begin
  fl:=true;
  Writeln(con:20,tim:10,agn:20,pri:10,dop:30);
  end; end; end;
  if fl=false then
  Writeln('Таких записей нет.')
  else
  Writeln('Поиск в БД успешно завершён.');
  close(f);
  end; 
  procedure findagn(Var f:tfile);
  Var a:lot;
  fl:boolean;
  x,con,agn,dop:string;
  tim,pri:integer;
  begin
  reset(f);
  Writeln('Введите название агентсва/турфирмы:');
  readln(x);
  fl:=true;
  Writeln('Страна: ',con:20,
  'Длительность: ',tim:10,
  'Агенство: ',agn:20,
  
  'Цена: ',pri:10,'Дополнительно: ',dop:30);
  While NOT EOF(f) do
  begin
  read(f,a);
  With a do
  if x=agn then
  fl:=true;
  Writeln(con:20,tim:10,agn:20,pri:10,dop:30);
  end;
  if fl=false then
  Writeln('Таких записей нет.')
  else
  Writeln('Поиск в БД успешно завершён.');
  close(f);
  end;
  procedure findcon(Var f:tfile);
  Var a:lot;
  fl:boolean;
  x,con,agn,dop:string;
  tim,pri:integer;
  begin
  reset(f);
  Writeln('Введите название страны:');
  readln(x);
  fl:=true;
  Writeln('Страна: ',con:20,'Длительность: ',tim:10,'Агенство: ',agn:20,'Цена: ',pri:10,'Дополнительно: ',dop:30);
  While NOT EOF(f) do
  begin
  read(f,a);
  With a do
  if x=con then
  fl:=true;
  Writeln(con:20,tim:10,agn:20,pri:10,dop:30);
  end;
  if fl=false then
  Writeln('Таких записей нет.')
  else
  Writeln('Поиск в БД успешно завершён.');
  close(f);
  end;
  procedure findtim(Var f:tfile);
  Var a:lot;
  fl:boolean;
  con,agn,dop:string;
  x,tim,pri:integer;
  begin
  reset(f);
  Writeln('Введите длительность тура:');
  readln(x);
  fl:=true;
  Writeln('Страна: ':20,'Длительность: ':10,'Агенство: ':20,'Цена: ':10,'Дополнительно: ':30);
  While NOT EOF(f) do
  begin
  read(f,a);
  With a do
  if x=tim then
  fl:=true;
  Writeln(con:20,tim:10,agn:20,pri:10,dop:30);
  end;
  if fl=false then
  Writeln('Таких записей нет.')
  else
  Writeln('Поиск в БД успешно завершён.');
  close(f);
  end;
  Procedure Menu;
  begin
  
  Writeln('МЕНЮ:');
  Writeln('1.Туры по списку предложенных.');
  Writeln('2.Поиск тура по цене(в страну).');
  Writeln('3.Поиск тура по наименованию агенства.');
  Writeln('4.Поиск тура по предложенным странам поездки.');
  Writeln('5.Поиск тура по его длительности.');
  Writeln('6.Конец работы.');
  end;
  begin
  assign(f,'bd.dat');
  
   
   
  repeat
  Menu;
  Readln(k);
  case k of
  1:tures(f);
  2:findprice(f);
  3:findagn(f);
  4:findcon(f);
  5:findtim(f);
  6:begin
 
  Writeln('Работа завершена.');
  end;
  else
  begin
  
  writeln('Введите правильный пункт меню.');
  readln; end; end;
  until k=7;
  end.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.06.2019, 15:28
Ответы с готовыми решениями:

Проверьте пожалуйста программу
Помогите найти ошибку В одномерном массиве, состоящем из n вещественных элементов, вычислить 1) сумму положительных элементов массива ...

Проверьте пожалуйста. (Внутри)
(Ссылка на сторонний ресурс удалена) Раздел Циклы. Цикл While. Обработка последовательностей, индуктивные функции. Задача С. Вот код...

Проверьте, пожалуйста, правильно ли я преобразовала программу
из while program n61; var x,y:real; begin writeln('x':10,'f(x)':10); x:=0; while x&lt;=pi do begin y:=(sqr(x))*(cos(x+(pi/3))); ...

3
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
23.06.2019, 04:30
Лучший ответ Сообщение было отмечено DitarKnyaz как решение

Решение

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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
Program SUBDproject1;
uses
  sysutils;
Type
  Tlot = record
     con:string[20];  // Страна.
     tim:integer;     // Длительность тура.
     agn:string[20];  // Турфирма.
     pri:integer;     // Цена.
     dop:string[50];  // Дополнительно.
            end;
  tfile = file of Tlot;
 
procedure Zagolovok;
begin
   Writeln('Страна: ':15,'Длительность: ':5,'Агенство: ':15,'Цена: ':10,'Дополнительно: ':30);
end;
 
procedure Screentures(aa:Tlot);
begin
  Writeln(aa.con:15, aa.tim:5, aa.agn:15, aa.pri:10, aa.dop:30);
end;
 
procedure EndMessage(ff: boolean);
begin
  if ff then
    Writeln('Поиск в БД успешно завершён.')
  else
    Writeln('Таких записей нет.');
 
end;
 
procedure writetures(Var f:tfile);
var
  a:Tlot;
  s: string;
begin
  Reset(f);
  Seek(f,FileSize(f));
  Writeln('Введите данные тура:');
  repeat
  Writeln('Страна:');
  Readln(a.con);
  Writeln('Длительность:');
  Readln(a.tim);
  Writeln('Турфирма:');
  Readln(a.agn);
  Writeln('Цена:');
  Readln(a.pri);
  Writeln('Дополнительно:');
  Readln(a.dop);
  write(f,a);
  Writeln('Продолжить ввод информации? y/n:');
  Readln(s);
  if s = 'n' then
    break;
  until false;
  close(f);
  end;
 
procedure tures(Var f:tfile);
Var
  a:Tlot;
begin
  Zagolovok;
  reset(f);
  While NOT EOF(f) do
    begin
      read(f,a);
      Screentures(a)
    end;
  close(f);
end;
 
 
procedure findprice(Var f:Tfile);
Var
  a:Tlot;
  fl:boolean;
  x: string;
  x1: integer;
begin
  fl:= false;
  Writeln('Введите название страны для поиска:');
  readln(x);
  if x<>'#' then
    begin
      writeln('Введите нужный ценовой порог:');
      readln(x1);
      Zagolovok;
      reset(f);
      While NOT EOF(f) do
        Begin
          read(f,a);
          if (x = a.con) and (x1 >= a.pri) then
              begin
                fl:=true;
                Screentures(a);
              end;
        end;
    end;
  EndMessage(fl);
  close(f);
end;
 
procedure findagn(Var f:tfile);
Var
  a:Tlot;
  fl:boolean;
  x: string;
begin
  fl:= false;
  Writeln('Введите название агентства/турфирмы:');
  readln(x);
  Zagolovok;
  reset(f);
  While NOT EOF(f) do
    begin
      read(f,a);
        if x = a.agn then
          begin
            fl:= true;
            Screentures(a);
          end;
    end;
  EndMessage(fl);
  close(f);
end;
 
 
procedure findcon(Var f:tfile);
Var
  a:Tlot;
  fl:boolean;
  x: string;
begin
  fl:= false;
  Writeln('Введите название страны:');
  readln(x);
  Zagolovok;
  reset(f);
  While NOT EOF(f) do
    begin
      read(f,a);
        if x = a.con then
          begin
           fl:=true;
           Screentures(a);
          end;
    end;
  EndMessage(fl);
 
  close(f);
end;
 
procedure findtim(Var f:tfile);
Var
  a:Tlot;
  fl:boolean;
  x: integer;
begin
  fl:= false;
  Writeln('Введите длительность тура:');
  readln(x);
  Zagolovok;
  reset(f);
  While NOT EOF(f) do
    begin
      read(f,a);
        if x = a.tim then
          begin
           fl:=true;
           Screentures(a);
          end;
    end;
  EndMessage(fl);
  close(f);
end;
 
Procedure Menu;
  begin
    Writeln('МЕНЮ:');
    Writeln('1.Туры по списку предложенных.');
    Writeln('2.Поиск тура по цене(в страну).');
    Writeln('3.Поиск тура по наименованию агенства.');
    Writeln('4.Поиск тура по предложенным странам поездки.');
    Writeln('5.Поиск тура по его длительности.');
    Writeln('6.Добавление новых туров.');
    Writeln('7.Конец работы.');
  end;
 
 
Var
  f:tfile;
  k:byte;
  namefil: string;
begin
 namefil:= 'bd.dat';
  assign(f,namefil);
  if  not FileExists(namefil) then
    rewrite(f);
  repeat
    Menu;
    Readln(k);
    case k of
    1:tures(f);
    2:findprice(f);
    3:findagn(f);
    4:findcon(f);
    5:findtim(f);
    6:writetures(f);
    7: begin
         Writeln('Работа завершена.');
       end;
    else
      begin
        writeln('Введите правильный пункт меню.');
        readln;
      end;
    end;
  until k=7;
  Readln;
end.
Ошибки:
1. Не сделан пункт меню, который позволяет создавать файл базы данных.
2. Не сделана процедура, которая заполняет базу данных информацией.
Запомните эти кодовые строчки. Они позволяют дописывать информацию в конец типизированного файла.
Pascal
1
2
3
 
Reset(f);
Seek(f,FileSize(f));
Этот код проверяет существование файла, и если он не существует, то создается заново программой. namefil - строковая переменная. Если стоит просто имя файла, то проверяется наличие файла в той же директории, что и исполняемый файл, если стоит полный путь к файлу, то программа проверяет наличие файла, там куда указывает путь.
Pascal
1
2
if  not FileExists(namefil) then
    rewrite(f);
3. Вывод найденных записей был организован с ошибками.
4. Куча мелочей, которые сильно на исполнение кода не влияют, но делают код неудобным для чтения.
1
0 / 0 / 0
Регистрация: 22.06.2019
Сообщений: 2
23.06.2019, 13:39  [ТС]
Спасибо вам огромное! Разбираю ваш код, визуально всё понимаю.
Сейчас рискну попробовать и самому написать функции корректировки и удаления данных, усложнить было бы интересно.
А вот вопрос, я приписывал к переменной "a" просто "lot" , а вы написали "Tlot". Что это означает? Какова разница между этими двумя функциями?
Заранее большущее спасибо!
0
2374 / 776 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
24.06.2019, 04:57
Существуют некоторые необязательные, но хорошие условности при написании программ. Рекомендую их запомнить.
1. Если вы создаете свой собственный тип переменных, то возьмите за правило перед именем типа ставить большую латинскую литеру "T" Очень удобно и понятно.
2. Никогда не назначайте именем переменной одиночные латинские литеры "o" "l" ! Они на экране плохо отличимы от нулей и единиц. Разбираться с этим - кошмар!
3. Не назначайте одни и те же имена переменных в параметрах функций и процедур и для глобальных переменных, которые будут затем подставлены в параметры процедур и функций. Разбираться с этим - кошмар!
4. При написании простых программ процедуры и функции прописывайте до тела основной программы и объявления глобальных переменных. Потому что, чем меньше глобальных переменных проходят сквозняком через подпрограммы без вывода в параметры процедуры или функции - тем легче потом разбираться с кодом.
5. Старайтесь переменным и процедурам назначать осмысленные имена, пусть даже они будут длинными. Однолитерные имена позволительны только в очень коротких программах. Потому что их мало и их легко запомнить.
6. Лично я стараюсь не пользоваться оператором With - он нагружает голову человека дополнительными условностями, которые нужно держать в памяти при чтении кода, что отвлекает от основной линии размышлений.
7. Делайте отступы при написании вложенных операторов и кодов. Хорошо отформатированный код отлично помогает разобраться с логикой работы алгоритма.
8. Добавляйте комментарии. Это доставляет много хлопот, но затем сильно помогает. Старайтесь комментировать назначение переменных. Помните, через 3-4 дня (проверено практикой! 100 процентов!) вы напрочь забудете, что писали и какие переменные куда предназначены. А комментарии быстро помогут вам вспомнить логику вашей программы.

Нужно всегда помнить, что у человека в голове - нейронный компьютер, а у него очень специфические способности к пониманию и восприятию информации. Обычный компьютер может оперировать с миллиардами переменных и у него супер крепкая память, а человек с обычными способностями может в поле внимания держать 7-10 параметров. Мозг быстро освобождает свою память от непрактичной и несвоевременной информации. Для компьютера все равно, как обозначаются те или иные переменные или слова, а для нас - нет. Нужно обязательно, чтобы это было что-то знакомое.
Для компьютера все равно как расположен текст кода, лишь бы был соблюден синтаксис, а для человека - нет. Расстановкой кода, человек помогает себе понять, что в чем находиться и от чего зависит.
Эти маленькие удобства в совокупности серьезно экономят ресурсы вашего мозга, которые вы затем направляете по основному направлению - моделируете внутри себя логику работы программы. И работа становиться более менее приятной и без дикого стресса.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.06.2019, 04:57
Помогаю со студенческими работами здесь

Пожалуйста, проверьте, правильно ли написана программа
Вычислите A1+A3+A5+...+A2N-1 CONST M = 1000; type MAS = array of integer; VAR A:MAS; S,N,I:INTEGER; BEGIN ...

Пожалуйста, проверьте программу. Что то не так с форматным выводом
program nakoplenie; var s,x,y,p,z: real; k1, k2, k3,k4,k: integer; function summa(k: integer): real; begin ...

Вычислить и напечатать таблицы значений функции (проверьте пожалуйста)
Задача: 5. Вычислить и напечатать таблицы значений функции y =f (x) на ин- тервале значений x = (a ;b) с шагом h (решить задачу с помощью...

Проверьте пожалуйста
вот условие Описать процедуру PowerA3(A, B), вычисляющую третью степень числа A и возвращающую ее в переменной B (A — входной, B — выходной...

Проверьте пожалуйста!
Пожалуйста проверьте задачу все лия правильно делаю Нужно написать программу ,которая выводит таблицу значений y=!x+2!,диапазон от -4...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru