- имя студента;
- пол;
- рост;
- оценки по трем экзаменам.
Написать функцию TASK_3_1 (f), проверяющую, есть ли среди юношей отличники."
Вот решение этой задачи:
Код
uses wincrt;
type student=record name:string[11];
male:char; {ж - жен, м - муж}
height:byte;
marks:array[1..3] of 2..5;
end;
myfile=file of student;
var f:myfile;
vova:student;
var i,j:byte;
procedure input(var f:myfile);
begin
assign(f,'C:stud.txt');
rewrite(f);
for i:=1 to 3 do
begin
with vova do
begin
write('Введите фамилию студента: ');
readln(name);
write('Введите пол студента (м или ж): ');
readln(male);
write('Введите рост студента: ');
readln(height);
for j:=1 to 3 do
begin
write('Введите оценку по ',j,'ому предмету: ');
readln(marks[j])
end
end;
write(f,vova)
end;
close(f)
end;
procedure task_3_4(var f:myfile);
var ocenka,k:byte;
begin
reset(f);
ocenka:=0;
for i:=1 to 2 do
begin
with vova do
begin
k:=0;
read(f,vova);
for j:=1 to 3 do
begin
if (marks[j]=4) or (marks[j]=5) then
begin
inc(k)
end; end;
if k=3 then
writeln('---> ',name,' имеет положительные оценки ')
else
inc(ocenka)
end
end;
if ocenka=2 then
writeln('---> Студентов с положительными оценкам нет');
close(f)
end;
begin
input(f);
task_3_4(f)
end.
type student=record name:string[11];
male:char; {ж - жен, м - муж}
height:byte;
marks:array[1..3] of 2..5;
end;
myfile=file of student;
var f:myfile;
vova:student;
var i,j:byte;
procedure input(var f:myfile);
begin
assign(f,'C:stud.txt');
rewrite(f);
for i:=1 to 3 do
begin
with vova do
begin
write('Введите фамилию студента: ');
readln(name);
write('Введите пол студента (м или ж): ');
readln(male);
write('Введите рост студента: ');
readln(height);
for j:=1 to 3 do
begin
write('Введите оценку по ',j,'ому предмету: ');
readln(marks[j])
end
end;
write(f,vova)
end;
close(f)
end;
procedure task_3_4(var f:myfile);
var ocenka,k:byte;
begin
reset(f);
ocenka:=0;
for i:=1 to 2 do
begin
with vova do
begin
k:=0;
read(f,vova);
for j:=1 to 3 do
begin
if (marks[j]=4) or (marks[j]=5) then
begin
inc(k)
end; end;
if k=3 then
writeln('---> ',name,' имеет положительные оценки ')
else
inc(ocenka)
end
end;
if ocenka=2 then
writeln('---> Студентов с положительными оценкам нет');
close(f)
end;
begin
input(f);
task_3_4(f)
end.
В этой задаче когда вводишь данные : отличник, троешник, отличник, Он выводит первого отличника, а третьего не выводит. !!!!! и ещё есть некторые случаи.!
Тут где-то явно маленький касяк. Посмотрите пожалуйста, подскажите.