
Лабораторная работа № 9. Записи
Задание 1. Наберите текст программы и познакомьтесь с типом данныхRecord. Определите, что выполняется в программе.
Program Example18;
Type STR= Record
Fam: string;
B1, B2, B3, B4, B5: 2..5;
SB: real;
End;
Var Tbl: array[1..50] of str;
i,n: integer;
Begin
Write('n=');
Readln(n);
For i:=1 to n do
Begin
Write('FIO:'); Readln (Tbl[i].FAM);
Write('Ozenki: ');Readln(Tbl[i].B1, Tbl[i].B2,Tbl[i].B3, Tbl[i].B4, Tbl[i].B5);
End;
Writeln('Sredniy ball');
For i:=1 to n do
Begin
Tbl[i].SB:=(Tbl[i].B1+Tbl[i].B2+Tbl[i].B3+ Tbl[i].B4+Tbl[i].B5)/5;
Writeln(Tbl[i].FAM,' – ', Tbl[i].SB:5:2);
End;
End.
Средний балл студентов
В программе содержится много повторяющихся данных. Для её упрощения воспользуйтесь оператором присоединения With.
For i:= 1 to n do Begin
With Tbl[i] do Begin
Write('FIO:'); Readln (FAM);
Write('Ozenki: ');
Readln(B1, B2, B3, B4, B5);
End;
End;
Writeln('Sredniy ball');
For i:= 1 to n do Begin
With Tbl[i] do Begin
SB:= (B1+B2+B3+B4+B5)/5;
Writeln(FAM,' – ',SB:5:2);
End;
End;
Задание 2. Доработайте программу, чтобы данные о студентах и их средние баллы записывались в файл.
type
STR = Record
Fam: string;
B1, B2, B3, B4, B5: 2..5;
SB: real;
End;
var
Tbl: array[1..50] of str;
i, n: integer;
k: text;
begin
assign(k, 'D:\sredniy ball.txt');
rewrite(k);
Write('n=');
Readln(n);
for i := 1 to n do
with Tbl[i] do
begin
Write('FIO:'); Readln(FAM);
Write('Ozenki: ');
Readln(B1, B2, B3, B4, B5);
end;
Writeln('Sredniy ball');
for i := 1 to n do
begin
with Tbl[i] do
begin
SB := (B1 + B2 + B3 + B4 + B5) / 5;
writeln(FAM, ' – ', SB:5:2);
Write(k, FAM, ' – ', SB:5:2);
end;
end;
close(k);
end.
Лабораторная работа № 10. Подпрограммы
Задание 1.Исправьте ошибки в программе.
Function V(R, H: real): real;
Begin
V:= pi*sqr(R)*H;
End;
Var x,a,b: real;
Begin
a:= V(3,4);
b:= V(2,4);
Writeln('V1=', a);
Writeln('V2=', b);
x:= a - b;
Writeln('V1 – V2=', x:4:1);
End.
Задание 2.Посмотрите пример функции вычисляющей факториал числа. В основной программе посчитайте выражениеy = (m! + k!)/s!
var
m,k,s:integer;
y:real;
Function factorial(n: byte): longint;
Begin
if (n = 0) or (n = 1) then factorial:= 1
else factorial:= n * factorial(n - 1);
End;
begin
readln(m ,k ,s);
m:=factorial(m);
k:=factorial(k);
s:=factorial(s);
y:= (m + k)/s;
writeln('y= ',y);
end.
Задание 3.Составьте функцию, вычисляющую логарифм с произвольным основаниемlogab.
var a,b,logarifm:real;
begin
writeln('введите основание');
readln(b);
writeln('введите показатель логарифма');
readln(a);
logarifm:=ln(a)/ln(b);
writeln('log=',logarifm);
end.
Задание 4.Составьте функцию для вычисления площади кольца.
Рис. 3. Кольцо
var r1, r2: integer;
s: real;
Function ploshad(r1, r2: integer) : real;
Begin
ploshad:= pi*(r1*r1-r2*r2)
End;
begin
writeln('Введите внешний радиус кольца');
readln(r1);
writeln('Введите внутренний радиус кольца');
readln(r2);
s:=ploshad(r1, r2);
writeln('Площадь кольца равна', s);
readln;
end.
Задание 5.Наберите код программы и посмотрите пример использования процедурыColor.
Program Example20;
Uses Crt;
Procedure Color(x, y: word);
Begin
TextColor(x);
TextBackGround(y);
End;
Begin
Color(1,5);
Write('Hello ');
Color(1,3);
Writeln('student!');
Readln;
End.
Задание 6.Доработайте программу, чтобы цвет фона и цвет текста вводились пользователем при запуске программы.
program ptimer6;
Uses Crt;
Procedure Color(x, y: word);
Begin
TextColor(x);
TextBackGround(y);
End;
var n,m,k,p:byte;
Begin
read(n,m);
read(k,p);
Color(n,m);
Write('Hello ');
Color(k,p);
Writeln('student!');
Readln;
End.