Вот всё,что я смог сделать.мне кажется что в процедуре я что-то не правильно вырезаю.Помогите плиз.Ведь там не так много подправить надо.
program n1;
const
nmax=7;
type
sotr=record
name:string[20];{Фамилия}
matan,progr,ist:byte;{Ocenki}
end;
function readdata(var rec:sotr):integer;
var
s:string[80];{Строка ввода}
p:integer;{Номер позиции в строке}
matanS,progrS,istS:string[1];{Строка, содержащая оценку за матан,progr и историю}
error:integer;{Код ошибки при преобразовании строки в число}
begin
readln(s);
if S='' then
ReadData:=-1
else
begin
p:=pos(' ',s);
if p=0 then
ReadData:=1
else
begin
rec.name:=copy(s,1,p-1);
delete(s,1,p);
matanS:=copy(S,1,pos(' ',s));
val(matanS,rec.matan,error);
delete(s,1,length(matanS));
progrS:=copy(S,1,pos(' ',s));
val(progrS,rec.progr,error);
delete(s,1,length(progrS));
istS:=copy(S,1,pos(' ',s));
val(istS,rec.ist,error);
delete(s,1,length(istS));
if Error <> 0 then
ReadData:=1
else
ReadData:=0;
end;
end;
end;
VAR
data:array[1..nmax] of sotr;{Массив записей о служащих}
N:integer;
readResult:integer;{Результат ввода записи}
I,j:integer;{номер очередного эл-та массива}
t:string[25];
BEGIN
{Ввод числа записей}
repeat
write('Задайте число служащих (1..',nmax,')');
readln(n);
if (n<=0) or (N>nmax) then
writeln('Вы ошиблись! Повторите!');
until (n>0) and (n<=nmax);
{Ввод массива записей}
writeln('Введите фамилии студентов и через пробел их оценки ');
for i:=1 to n do
begin
repeat
ReadResult:=ReadData(data[I]);
if ReadResult <> 0 then
writeln('Вы ошиблись! Повторите!');
until ReadResult=0;
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if data[i].name>data[j].name then
begin
t:=data[i].name;
data[i].name:=data[j].name;
data[j].name:=t;
end;
writeln('Фамилия матан прогр история ');
for i:=1 to n do
writeln(data[i].name,' ',data[i].matan,' ',data[i].progr,' ',data[i].ist);
end.
Сообщение отредактировано: Rom1k -