Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196

Ошибка в програме

19.04.2019, 16:34. Показов 3317. Ответов 39
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При неправильном вводе данных и нажатии Enter для ввода новой записи, запись начинается вводиться сразу с количества часов, а не с названия предмета как надо



Вот код:


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
uses crt; 
 
type 
predmet = record
nomer: integer; 
kolchasov: integer; 
nazvanie: string[20]; 
fio: string[29];
kafedra: string[20]; 
kolzachetov: integer;
kolekzamenov: integer;
 
end; 
pr = predmet; 
 
var 
key: char; 
mas: array [1..100] of pr; 
f: file of pr; 
i, j: integer; 
 
begin 
assign(f, 'predmet.dat'); 
 
repeat 
try 
if not fileexists('predmet.dat') then 
begin 
rewrite(f); 
close(f); 
end; 
reset(f); 
 
j := 0; 
while not eof(f) do 
begin 
inc(j); 
read(f, mas[j]); 
end; 
close(f); 
inc(j); 
clrscr; 
Writeln('Введите название предмета '); 
readln(mas[j].nazvanie); 
 
clrscr; 
Writeln('Введите количество часов '); 
readln(mas[j].kolchasov); 
 
clrscr; 
Writeln('Введите ФИО преподователя '); 
readln(mas[j].fio);
 
clrscr; 
Writeln('Введите номер кафедры '); 
readln(mas[j].kafedra);
 
clrscr; 
Writeln('Введите количество зачетов '); 
readln(mas[j].kolzachetov);
 
clrscr; 
Writeln('Введите количество экзаменов '); 
readln(mas[j].kolekzamenov); 
 
rewrite(f); 
for i := 1 to j do 
begin 
mas[i].nomer := i; 
write(f, mas[i]); 
end; 
close(f); 
clrscr; 
writeln('Добавлена запись ', mas[i]); 
except 
clrscr; 
writeln('Ошибка при введении данных !!! '); 
end; 
repeat 
writeln('Для внесения следующей записи нажмите Enter; для выхода ESC '); 
key := readkey; 
if (key <> #27) and (key <> #13) then begin 
clrscr; 
writeln('Некоректно !!! '); 
end; 
until (key = #27) or (key = #13); 
until (key = #27); 
end.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.04.2019, 16:34
Ответы с готовыми решениями:

Нужна блок-схема к програме
uses crt; var a:array of integer;{матрица} m,n,i,j,k,tmp:integer; {размеры матрицы,счетчики циклов, буфер для обмена} begin ...

нужно задать тангенс в програме
procedure TForm1.Button1Click(Sender: TObject); var A,B,C,D:Integer; X0,Y0:Integer; X,Y:Real; begin // Î÷èñòèòü ðèñóíîê ...

Ошибка в програме
#include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; int main() { int a; cout&lt;&lt;&quot;Vvedite vawy cymy...

39
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,254
20.04.2019, 16:41
Студворк — интернет-сервис помощи студентам
Saulq, вы хотите,что бы если пользователь не правильно ввел данные,то с того место где он их не правильно ввел,он ввел эти данные еще раз?

Добавлено через 13 минут
Saulq, вот:
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
uses crt;
 
type
  predmet = record
    nomer: integer; 
    kolchasov: integer; 
    nazvanie: string[20]; 
    fio: string[29];
    kafedra: string[20]; 
    kolzachetov: integer;
    kolekzamenov: integer;
  
  end;
  pr = predmet;
 
var
  key: char; 
  mas: array [1..100] of pr; 
  f: file of pr; 
  i, j, n: integer;
 
begin
  assign(f, 'predmet.dat'); 
  
  repeat
    if not fileexists('predmet.dat') then 
    begin
      rewrite(f); 
      close(f); 
    end; 
    reset(f); 
    
    j := 0; 
    while not eof(f) do 
    begin
      inc(j); 
      read(f, mas[j]); 
    end; 
    close(f); 
    inc(j); 
    clrscr; 
    repeat
      try
        Writeln('Введите название предмета '); 
        readln(mas[j].nazvanie);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
      end; 
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите количество часов '); 
        readln(mas[j].kolchasov);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(2000);
      end; 
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите ФИО преподователя '); 
        readln(mas[j].fio);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(2000);
      end; 
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите номер кафедры '); 
        readln(mas[j].kafedra);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(2000);
      end; 
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите количество зачетов '); 
        readln(mas[j].kolzachetov);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(2000);
      end;
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите количество экзаменов '); 
        readln(mas[j].kolekzamenov);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(2000);
      end; 
    until n = 1;
    rewrite(f); 
    for i := 1 to j do 
    begin
      mas[i].nomer := i; 
      write(f, mas[i]); 
    end; 
    close(f); 
    clrscr; 
    writeln('Добавлена запись ', mas[i]); 
    repeat
      writeln('Для внесения следующей записи нажмите Enter; для выхода ESC '); 
      key := readkey; 
      if (key <> #27) and (key <> #13) then begin
        clrscr; 
        writeln('Некоректно !!! '); 
      end; 
    until (key = #27) or (key = #13); 
  until (key = #27); 
end.
этот код должен вам подойти
1
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
20.04.2019, 16:45  [ТС]
Пс, спасибо, это то что мне надо!
0
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,254
20.04.2019, 16:47
Saulq, не за что,только в вашем коде 88 строки,а в моем 135)
0
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
20.04.2019, 17:04  [ТС]
Пс, а как сделать сообщение об ошибке введенных данных при попытке ввести цифру в ФИО?
0
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,254
20.04.2019, 20:09
Лучший ответ Сообщение было отмечено Saulq как решение

Решение

Saulq, сейчас попробую сделать

Добавлено через 15 минут
Вот:
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
uses crt;
 
 
type
  predmet = record
    nomer: integer; 
    kolchasov: integer; 
    nazvanie: string[20]; 
    fio: string[29];
    kafedra: string[20]; 
    kolzachetov: integer;
    kolekzamenov: integer;
  
  end;
  pr = predmet;
 
const
  SL = ['А'..'Я'];
  SLV = ['а'..'я'] + SL;
 
var
  key: char; 
  mas: array [1..100] of pr; 
  f: file of pr; 
  i, j, n, k, e: integer;
 
begin
  assign(f, 'predmet.dat'); 
  
  repeat
    if not fileexists('predmet.dat') then 
    begin
      rewrite(f); 
      close(f); 
    end; 
    reset(f); 
    
    j := 0; 
    while not eof(f) do 
    begin
      inc(j); 
      read(f, mas[j]); 
    end; 
    close(f); 
    inc(j); 
    clrscr; 
    repeat
      
      Writeln('Введите название предмета '); 
      readln(mas[j].nazvanie);
      for var d := 1 to length(mas[j].nazvanie) do
      begin
        if not (mas[j].nazvanie[d] in SLV)
        then begin
          clrscr;
          writeln('Ошибка при введении данных !!! ');
          delay(1000);
          clrscr;
        end else n := 1;
        
      end;
      inc(e);
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите количество часов '); 
        readln(mas[j].kolchasov);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(1000);
      end; 
    until n = 1;
    n := 0;
    repeat
      clrscr; 
      Writeln('Введите ФИО преподователя '); 
      readln(mas[j].fio);
      for var d := 1 to length(mas[j].fio) do
      begin
        if not (mas[j].fio[d] in SLV)
        then begin
          clrscr;
          writeln('Ошибка при введении данных !!! ');
          delay(1000);
        end else n := 1;
        
      end;
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите номер кафедры '); 
        readln(mas[j].kafedra);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(1000);
      end; 
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите количество зачетов '); 
        readln(mas[j].kolzachetov);
        n := 1
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(1000);
      end;
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите количество экзаменов '); 
        readln(mas[j].kolekzamenov);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(1000);
      end; 
    until n = 1;
    rewrite(f); 
    for i := 1 to j do 
    begin
      mas[i].nomer := i; 
      write(f, mas[i]); 
    end; 
    close(f); 
    clrscr; 
    writeln('Добавлена запись ', mas[i]); 
    repeat
      writeln('Для внесения следующей записи нажмите Enter; для выхода ESC '); 
      key := readkey; 
      if (key <> #27) and (key <> #13) then begin
        clrscr; 
        writeln('Некоректно !!! '); 
      end; 
    until (key = #27) or (key = #13); 
  until (key = #27); 
end.
1
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
23.04.2019, 16:03  [ТС]
Пс, когда вводишь в фио или предмет букву+цифру выходит ошибка, но ты продолжаешь работу дальше, вместо того чтобы заново ввести данные, что делать?
0
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,254
23.04.2019, 18:55
Saulq,сегодня вряд-ли смогу ответить,может завтра,ок?
0
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
23.04.2019, 20:48  [ТС]
Пс, без проблем
0
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,254
25.04.2019, 08:52
Saulq, извини,я не могу понять в чем ошибка(
0
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
25.04.2019, 14:52  [ТС]
Пс, если ввести в строку 'ФИО' цифру, выйдет сообщение:Ошибка при введении данных !!!, и ввод повторится. Но если в строку 'ФИО' вместе с цифрой ввести буквы, Ошибка при введении данных отобразится, но цикл не повторяется. Так вот ошибка в том что цикл должен повториться
0
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,254
25.04.2019, 14:55
Saulq, в чем ошибка,это я понял)
Я не знаю как это исправить(

Добавлено через 1 минуту
Saulq, хорошие новости,я понял как это сделать)домой приду,скинк,ладно?
0
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
25.04.2019, 14:55  [ТС]
Пс, ну и ок)
0
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,254
25.04.2019, 14:58
Saulq, в принципе,можете прямо сейчас.
Строку 89 исправьте на это:
Pascal
1
else inc(n);
А строку 92 на:
Pascal
1
until n=length(mas[j].fio);
0
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
25.04.2019, 15:08  [ТС]
Пс, сможешь сделать процедуру которая высчитывает среднюю нагрузку по данной кафедре(указываем номер) по таким данным: Название предмета, ФИО препода, коло-во часов, коло-во экзаменов, коло-во зачетов, номер кафедры
Вот код таблицы:
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
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
uses 
crt; 
 
const 
Name = 'predmet.dat'; 
 
type 
predmet = record
nomer: integer; 
kolchasov: integer; 
nazvanie: string[20]; 
fio: string[29];
kafedra: integer; 
kolzachetov: integer;
kolekzamenov: integer;
end; 
pr = array [1..100] of predmet; 
 
var 
n: char; 
mas: pr; 
i: integer; 
f: file of predmet;
f1:file of predmet; 
 
// Чтение всего файла в массив 
procedure nachalo; 
begin 
if not System.IO.File.Exists(Name) then 
Exit; 
i := 0; 
Reset(f, Name); 
while not EOF(f) do 
begin 
inc(i); 
Read(f, mas[i]); 
end; 
Close(f); 
end; 
 
// Сортировка по алфавиту 
procedure Sort; 
var
ff: text; 
tmp: predmet; 
j, n: integer; 
begin
assign(f1, 'sort.dat'); 
for j := 1 to i - 1 do 
for n := 1 to i - j do 
begin 
if upcase(mas[n].fio[1]) > upcase(mas[n + 1].fio[1]) then begin 
tmp := mas[n]; 
mas[n] := mas[n + 1]; 
mas[n + 1] := tmp; 
end; 
end; 
rewrite(f1); 
for j := 1 to i do 
begin 
mas[j].nomer := j; 
write(f1, mas[j]); 
end; 
close(f1);
ClrScr;
WriteLn(' № | Название предмета |',' Часов |', '        Преподователь        |', ' Кафедра |', ' Количество зачетов |', ' Количество экзаменов |'); 
for j := 1 to i do 
with mas[j] do 
WriteLn(nomer:3, nazvanie:20, kolchasov:8, fio:30, kafedra:10, kolzachetov:21, kolekzamenov:23 ); 
readkey;
 
assign(ff, 'sort.txt'); 
rewrite(ff); 
j := 0; 
if not System.IO.File.Exists(Name) then 
Exit; 
 
Reset(f1); 
Writeln(ff, ' № | Название предмета |',' Часов |', '        Преподователь        |', ' Кафедра |', ' Количество зачетов |', ' Количество экзаменов |'); 
for j := 1 to i do 
with mas[j] do 
WriteLn(ff, nomer:3, nazvanie:20, kolchasov:8, fio:30, kafedra:10, kolzachetov:21, kolekzamenov:23 ); 
Close(ff);    
end; 
 
// Просмотр записей 
procedure See; 
var 
j: integer; 
begin 
ClrScr; 
WriteLn(' № | Название предмета |',' Часов |', '        Преподователь        |', ' Кафедра |', ' Количество зачетов |', ' Количество экзаменов |'); 
for j := 1 to i do 
with mas[j] do 
WriteLn(nomer:3, nazvanie:20, kolchasov:8, fio:30, kafedra:10, kolzachetov:21, kolekzamenov:23 ); 
readkey; 
end; 
 
// Удаление по № 
procedure delete; 
var 
a: char; 
tmp: pr; 
c, n, j: integer; 
begin 
ClrScr; 
 
WriteLn(' № | Название предмета |',' Часов |', '        Преподователь        |', ' Кафедра |', ' Количество зачетов |', ' Количество экзаменов |');; 
for j := 1 to i do 
with mas[j] do 
WriteLn(nomer:3, nazvanie:20, kolchasov:8, fio:30, kafedra:10, kolzachetov:21, kolekzamenov:23 );
 
WriteLn(' Введите номер удаляемого '); 
readln(n); 
c := 1; 
for j := 1 to i do 
if n <> mas[j].nomer then 
begin 
tmp[c] := mas[j]; 
inc(c); 
end 
else repeat 
clrscr; 
writeln('Для удаления нажмите: Enter - удалить; Esc - отмена : ', mas[j]); 
a := readkey; 
if a = #27 then begin 
tmp[c] := mas[j]; 
inc(c); 
end; 
until (a = #27) or (a = #13); 
rewrite(f); 
 
for j := 1 to c - 1 do 
begin 
tmp[j].nomer := j; 
write(f, tmp[j]); 
end; 
close(f); 
ReadLnString('Нажмите Enter для возврата в меню...'); 
end;
 
// Добавить запись
procedure Add;
type
  predmet = record
    nomer: integer; 
    kolchasov: integer; 
    nazvanie: string[20]; 
    fio: string[29];
    kafedra: integer; 
    kolzachetov: integer;
    kolekzamenov: integer;
  
  end;
  pr = predmet;
 
const
  SL = ['А'..'Я'];
  SLV = ['а'..'я'] + SL;
 
var
  key: char; 
  mas: array [1..100] of pr; 
  f: file of pr; 
  i, j, n, e: integer;
 
begin
  assign(f, 'predmet.dat'); 
  
  repeat
    if not fileexists('predmet.dat') then 
    begin
      rewrite(f); 
      close(f); 
    end; 
    reset(f); 
    
    j := 0; 
    while not eof(f) do 
    begin
      inc(j); 
      read(f, mas[j]); 
    end; 
    close(f); 
    inc(j);  
    repeat
     clrscr; 
      Writeln('Введите название предмета '); 
      readln(mas[j].nazvanie);
      for var d := 1 to length(mas[j].nazvanie) do
      begin
        if not (mas[j].nazvanie[d] in SLV)
        then begin
          clrscr;
          writeln('Ошибка при введении данных !!! ');
          delay(1000);
          clrscr;
        end else n := 1;
        
      end;
      inc(e);
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите количество часов '); 
        readln(mas[j].kolchasov);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(1000);
      end; 
    until n = 1;
    n := 0;
    repeat
      clrscr; 
      Writeln('Введите ФИО преподователя '); 
      readln(mas[j].fio);
      for var d := 1 to length(mas[j].fio) do
      begin
        if not (mas[j].fio[d] in SLV)
        then begin
          clrscr;
          writeln('Ошибка при введении данных !!! ');
          delay(1000);
        end else n := 1;
        
      end;
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите номер кафедры '); 
        readln(mas[j].kafedra);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(1000);
      end; 
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите количество зачетов '); 
        readln(mas[j].kolzachetov);
        n := 1
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(1000);
      end;
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите количество экзаменов '); 
        readln(mas[j].kolekzamenov);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(1000);
      end; 
    until n = 1;
    rewrite(f); 
    for i := 1 to j do 
    begin
      mas[i].nomer := i; 
      write(f, mas[i]); 
    end; 
    close(f); 
    clrscr; 
    writeln('Добавлена запись ', mas[i]); 
    repeat
      writeln('Для внесения следующей записи нажмите Enter; для выхода ESC '); 
      key := readkey; 
      if (key <> #27) and (key <> #13) then begin
        clrscr; 
        writeln('Некоректно !!! '); 
      end; 
    until (key = #27) or (key = #13); 
  until (key = #27); 
end; 
 
begin 
nachalo;  
repeat 
ClrScr; 
Writeln(' 1 : Просмотр данных' );
Writeln(' 2 : Добавить запись' );      
Writeln(' 3 : Удалить запись');
Writeln(' 4 : Сортировка по ФИО' );   
WriteLn(' 0 : Выход' ); 
n := readkey; 
case n of 
'1': 
begin 
nachalo; 
See; 
end;
'2': add;  
'3': delete;
'4': sort; 
'0': Exit; 
end; 
until False; 
end.
Добавлено через 8 минут
Пс, работает но только один раз
0
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,254
25.04.2019, 15:34
Saulq, всм один раз?

Добавлено через 1 минуту
Saulq, возможно смогу,но скорее всего не сегодня
0
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
25.04.2019, 16:59  [ТС]
Пс, в том смысле что повтор цикла идет только 1 раз
0
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,254
25.04.2019, 17:01
Saulq, можете еще раз код полностью скинуть,с последними изменениями
0
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
25.04.2019, 18:40  [ТС]
Пс,
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
uses crt;
 
 
type
  predmet = record
    nomer: integer; 
    kolchasov: integer; 
    nazvanie: string[20]; 
    fio: string[29];
    kafedra: integer; 
    kolzachetov: integer;
    kolekzamenov: integer;
  
  end;
  pr = predmet;
 
const
  SL = ['А'..'Я'];
  SLV = ['а'..'я'] + SL;
 
var
  key: char; 
  mas: array [1..100] of pr; 
  f: file of pr; 
  i, j, n, e: integer;
 
begin
  assign(f, 'predmet.dat'); 
  
  repeat
    if not fileexists('predmet.dat') then 
    begin
      rewrite(f); 
      close(f); 
    end; 
    reset(f); 
    
    j := 0; 
    while not eof(f) do 
    begin
      inc(j); 
      read(f, mas[j]); 
    end; 
    close(f); 
    inc(j);  
    repeat
     clrscr; 
      Writeln('Введите название предмета '); 
      readln(mas[j].nazvanie);
      for var d := 1 to length(mas[j].nazvanie) do
      begin
        if not (mas[j].nazvanie[d] in SLV)
        then begin
          clrscr;
          writeln('Ошибка при введении данных !!! ');
          delay(1000);
          clrscr;
        end else inc(n);
      end;
      inc(e);
    until n = length(mas[j].nazvanie);
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите количество часов '); 
        readln(mas[j].kolchasov);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(1000);
      end; 
    until n = 1;
    n := 0;
    repeat
      clrscr; 
      Writeln('Введите ФИО преподователя '); 
      readln(mas[j].fio);
      for var d := 1 to length(mas[j].fio) do
      begin
        if not (mas[j].fio[d] in SLV)
        then begin
          clrscr;
          writeln('Ошибка при введении данных !!! ');
          delay(1000);
        end else inc(n);
 
        
      end;
    until n=length(mas[j].fio);
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите номер кафедры '); 
        readln(mas[j].kafedra);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(1000);
      end; 
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите количество зачетов '); 
        readln(mas[j].kolzachetov);
        n := 1
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(1000);
      end;
    until n = 1;
    n := 0;
    repeat
      try
        clrscr; 
        Writeln('Введите количество экзаменов '); 
        readln(mas[j].kolekzamenov);
        n := 1;
      except
        clrscr; 
        writeln('Ошибка при введении данных !!! '); 
        delay(1000);
      end; 
    until n = 1;
    rewrite(f); 
    for i := 1 to j do 
    begin
      mas[i].nomer := i; 
      write(f, mas[i]); 
    end; 
    close(f); 
    clrscr; 
    writeln('Добавлена запись ', mas[i]); 
    repeat
      writeln('Для внесения следующей записи нажмите Enter; для выхода ESC '); 
      key := readkey; 
      if (key <> #27) and (key <> #13) then begin
        clrscr; 
        writeln('Некоректно !!! '); 
      end; 
    until (key = #27) or (key = #13); 
  until (key = #27); 
end.
Добавлено через 11 минут
Пс, а вообще забей, мне кажется лучше оставить как было
0
257 / 149 / 70
Регистрация: 29.07.2018
Сообщений: 1,254
25.04.2019, 18:58
Saulq, хорошо,тогда завтра займусь процедурой
0
1 / 1 / 0
Регистрация: 03.12.2018
Сообщений: 196
25.04.2019, 19:02  [ТС]
Пс, спасибо большое)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.04.2019, 19:02

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

Ошибка в програме (Асемблер)
Задание: Определить количество елементов значения которых больше чем 100 Помогите пожалуйста. Написал програму.Вискакивает ошибка...

Ошибка в програме Крестики-нолики
main.cpp #include &quot;KR.h&quot; using namespace std; int main() { RandomPlayer *r = new RandomPlayer('o'); ...

Ошибка в програме, помогите исправить
вот текст програми, #include &lt;windows.h&gt; #include &lt;stdio.h&gt; #define BUF_SIZE 512 int CatFile(HANDLE, HANDLE); int main() ...

Что означает ошибка в главное програме при обращении к функцие инфо
#pragma argsused #include &lt;stdlib.h&gt; #include &lt;iostream.h&gt; #include &lt;conio.h&gt; struct KI {char Imya; char Familiya; char...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru