Здравствуйте,уважаемые форумчане!Я написал программу которая создаёт файл,записывает данные в него,обрабатывает их,записывает результат в другой файл и выводит результат на экран.Но при проверке работы программы обнаружилось что обработка проходит совсем неправильно.
Задача обработки состоит в том что бы из 10 пациентов отобрать тех,у кого возраст больший за "x" и диагноз равен "y".Суть проблемы в том,что программа не обрабатывает файл,а всего лишь записывает данные про первого пациента(как я понял) из него в файл,где должны быть записаны результаты.
Прошу вас помочь с данным вопросом,указать на ошибки,недоделки и показать как правильно обработать файл.
Внизу прилагаю код самой программы,а также часть программы,где неправильно обрабатывается файл.
Часть где обрабатывается файл.
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
| '2':begin
clrscr;
write('Имя файла--> ');
readln(st1);
assign(f,st1);
reset(f);
write('Напишите имя файла куда будут сохраняться результаты--> ');
readln(st2);
assign(rez,st2);
rewrite(rez);
while not eof(f) do
begin
with a do
begin
read(f,a);
write('Возраст--> ');
readln(x);
write('Диагноз--> ');
readln(y);
if (vozrast>x) and (diagnoz=y) then
writeln(pip,' ',pol,' ',vozrast,' ',diagnoz,' ');
end;
write(rez,a);
close(f);
close(rez);
writeln('Нажмите любую клавишу что бы вернуться в меню.....');
readkey;
goto Pascal;
end;
end; |
|
Сама программа.
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
| Uses CRT;
type
pacuent=record
pip:string[30];
pol:string[15];
vozrast:1..100;
diagnoz:string[50];
end;
var
f,rez:file of pacuent;
st1:string;
st2:string;
a:pacuent;
x,i:integer;
y:string[40];
ch:char;
label Pascal;
begin
clrscr;
Pascal:begin
clrscr;
writeln('Выберите действие');
writeln('0-create_file');
writeln('1-list_file');
writeln('2-work_file');
writeln('3-show_result');
writeln('4-exit');
ch:=readkey;
case ch of
'4':exit;
'0':begin
clrscr;
write('Имя файла----> ');
readln(st1);
assign(f,st1);
rewrite(f);
for i:=1 to 10 do
begin
writeln('Информация про ',i,' пациента: ');
with a do
begin
write('Имя и фамилия: ');
readln(pip);
write('Пол: ');
readln(pol);
write('Возраст: ');
readln(vozrast);
write('Диагноз: ');
readln(diagnoz);
writeln('_____________________________');
end;
write(f,a);
end;
close(f);
writeln('Нажмите любую клавишу что бы вернуться в меню.....');
readkey;
goto Pascal;
end;
'1':begin
clrscr;
write('Имя файла*---> ');
readln(st1);
assign(f,st1);
reset(f);
while not eof(f) do
begin
read(f,a);
with a do
begin
writeln('Имя и фамилия: ',pip);
writeln('Пол: ',pol);
writeln('Возраст: ',vozrast);
writeln('Диагноз: ',diagnoz);
writeln('_________________________');
end;
end;
close(f);
writeln('Нажмите любую клавишу что бы вернуться в меню.....');
readkey;
goto Pascal;
end;
'2':begin
clrscr;
write('Имя файла*--> ');
readln(st1);
assign(f,st1);
reset(f);
write('Напишите имя файла куда будут сохраняться результаты--> ');
readln(st2);
assign(rez,st2);
rewrite(rez);
while not eof(f) do
begin
with a do
begin
read(f,a);
write('Возраст--> ');
readln(x);
write('Диагноз--> ');
readln(y);
if (vozrast>x) and (diagnoz=y) then
writeln(pip,' ',pol,' ',vozrast,' ',diagnoz,' ');
end;
write(rez,a);
close(f);
close(rez);
writeln('Нажмите любую клавишу что бы вернуться в меню.....');
readkey;
goto Pascal;
end;
end;
'3':begin
clrscr;
write('Имя файла---> ');
readln(st2);
assign(rez,st2);
reset(rez);
while not eof(rez) do
begin
read(rez,a);
with a do
begin
writeln('Имя и фамилия ',pip);
writeln('Пол ',pol);
writeln('Возраст ',vozrast);
writeln('Диагноз ',diagnoz);
writeln('_________________________');
end;
end;
close(rez);
writeln('Нажмите любую клавишу что бы вернуться в меню.....');
readkey;
goto Pascal;
end;
end;
end;
end. |
|