Ответы
Ответ дал:
0
=== 8.1 ===
const
nn=20;
type
tSess=record
Fam:string[24];
mark:array[1..3] of byte
end;
tRes=array[1..nn] of tSess;
function MeanGrade(pRes:tSess):real;
// возвращает средний балл
begin
MeanGrade:=(pRes.mark[1]+pRes.mark[2]+pRes.mark[3])/3
end;
procedure pCopy(a:tSess; var b:tSess);
// Копирование a -> b
var i:integer;
begin
b.Fam:=a.Fam;
for i:=1 to 3 do b.mark[i]:=a.mark[i]
end;
procedure pSort(var pmRes:tRes; n:integer);
// сортировка массива по алфавиту поля Fam
var
tmp:tSess;
i,j:integer;
begin
for i:=1 to n-1 do
for j:=1 to n-i do
if pmRes[j].Fam > pmRes[j+1].Fam then begin
pCopy(pmRes[j],tmp); pCopy(pmRes[j+1],pmRes[j]);
pCopy(tmp,pmRes[j+1])
end;
end;
procedure pGet(Fam:string;m1,m2,m3:integer;var a:tSess);
// Присваивание значений структуре
begin
a.Fam:=Fam;
a.mark[1]:=m1;
a.mark[2]:=m2;
a.mark[3]:=m3
end;
procedure pPrint(a:tSess);
// вывод структуры
begin
Writeln('Фамилия: ',a.Fam);
Writeln('Баллы:',a.mark[1]:2,a.mark[2]:2,a.mark[3]:2);
Writeln
end;
var
i,n:integer;
mS:tRes;
begin
n:=3;
pGet('Сидоров',4,3,4,mS[1]);
pGet('Иванов',3,4,3,mS[2]);
pGet('Петров',3,3,3,mS[3]);
Writeln('*** Исходные данные ***');
for i:=1 to n do pPrint(mS[i]);
pSort(mS,3);
Writeln('*** Средний балл ниже 3.5 ***');
for i:=1 to 3 do
if MeanGrade(mS[i])<3.5 then pPrint(mS[i]);
end.
Пример
*** Исходные данные ***
Фамилия: Сидоров
Баллы: 4 3 4
Фамилия: Иванов
Баллы: 3 4 3
Фамилия: Петров
Баллы: 3 3 3
*** Средний балл ниже 3.5 ***
Фамилия: Иванов
Баллы: 3 4 3
Фамилия: Петров
Баллы: 3 3 3
=== 8.2 ===
function SC(s:string):set of char;
var
i:integer;
SoC:set of 'a'..'z';
begin
SoC:=['a'..'z'];
for i:=1 to Length(s) do Exclude(SoC,s[i]);
SC:=SoC;
end;
var
s:string;
i:'a'..'z';
mC:set of 'a'..'z';
begin
s:='qwertybbkldsfgnidrjglddfdfkhjgg';
mC:=SC(s);
for i:='a' to 'z' do
if i in mC then Write(i,' ');
Writeln
end.
Пример
a c m o p u v x z
const
nn=20;
type
tSess=record
Fam:string[24];
mark:array[1..3] of byte
end;
tRes=array[1..nn] of tSess;
function MeanGrade(pRes:tSess):real;
// возвращает средний балл
begin
MeanGrade:=(pRes.mark[1]+pRes.mark[2]+pRes.mark[3])/3
end;
procedure pCopy(a:tSess; var b:tSess);
// Копирование a -> b
var i:integer;
begin
b.Fam:=a.Fam;
for i:=1 to 3 do b.mark[i]:=a.mark[i]
end;
procedure pSort(var pmRes:tRes; n:integer);
// сортировка массива по алфавиту поля Fam
var
tmp:tSess;
i,j:integer;
begin
for i:=1 to n-1 do
for j:=1 to n-i do
if pmRes[j].Fam > pmRes[j+1].Fam then begin
pCopy(pmRes[j],tmp); pCopy(pmRes[j+1],pmRes[j]);
pCopy(tmp,pmRes[j+1])
end;
end;
procedure pGet(Fam:string;m1,m2,m3:integer;var a:tSess);
// Присваивание значений структуре
begin
a.Fam:=Fam;
a.mark[1]:=m1;
a.mark[2]:=m2;
a.mark[3]:=m3
end;
procedure pPrint(a:tSess);
// вывод структуры
begin
Writeln('Фамилия: ',a.Fam);
Writeln('Баллы:',a.mark[1]:2,a.mark[2]:2,a.mark[3]:2);
Writeln
end;
var
i,n:integer;
mS:tRes;
begin
n:=3;
pGet('Сидоров',4,3,4,mS[1]);
pGet('Иванов',3,4,3,mS[2]);
pGet('Петров',3,3,3,mS[3]);
Writeln('*** Исходные данные ***');
for i:=1 to n do pPrint(mS[i]);
pSort(mS,3);
Writeln('*** Средний балл ниже 3.5 ***');
for i:=1 to 3 do
if MeanGrade(mS[i])<3.5 then pPrint(mS[i]);
end.
Пример
*** Исходные данные ***
Фамилия: Сидоров
Баллы: 4 3 4
Фамилия: Иванов
Баллы: 3 4 3
Фамилия: Петров
Баллы: 3 3 3
*** Средний балл ниже 3.5 ***
Фамилия: Иванов
Баллы: 3 4 3
Фамилия: Петров
Баллы: 3 3 3
=== 8.2 ===
function SC(s:string):set of char;
var
i:integer;
SoC:set of 'a'..'z';
begin
SoC:=['a'..'z'];
for i:=1 to Length(s) do Exclude(SoC,s[i]);
SC:=SoC;
end;
var
s:string;
i:'a'..'z';
mC:set of 'a'..'z';
begin
s:='qwertybbkldsfgnidrjglddfdfkhjgg';
mC:=SC(s);
for i:='a' to 'z' do
if i in mC then Write(i,' ');
Writeln
end.
Пример
a c m o p u v x z
Ответ дал:
0
Но у меня же все работает, контрольный пример прошел. Что Вы называете "не получается запустить"? Что происходит?
Ответ дал:
0
И еще - Вы в какой версии Паскаля запускали? Я проверял в последней PascalABC.Net 3.2. Также, нормально работает в WDE прямо в браузере на сайте разработчика PascalABC.NET
Вас заинтересует
1 год назад
6 лет назад
8 лет назад
8 лет назад
9 лет назад