066536 / 389, 444, 345, 485, 866, 951
.doc
Задание 1 (№345)
Условие:
Пусть
Получить .
Блок-схема к задаче №345
t [0] := 1
t [k] := 0
t [k] := t [k] + t [i] * t [k
- i - 1];
Текст программы:
Program N345;
Const
cSeqMax = 10;
Type
TSeq = array [0..cSeqMax] of LongInt;
Var
t : TSeq;
k : Byte;
i : Byte;
Begin
t [0] := 1;
for k := 1 to cSeqMax do
begin
t [k] := 0;
for i := 0 to k - 1 do
t [k] := t [k] + t [i] * t [k - i - 1];
end;
writeln ('t (10) = ', t [10]);
End.
writeln ('t (10) = ', t [10]);
End.
Отчёт:
t (10) = 16796
Задание 2 (№389)
Условие:
Дана действительная матрица размера m X n, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, затем среди этих чисел выбирается наибольшее. Указать индексы элементы с найденным значением.
Блок-схема к задаче №389
First:=True
a[i,j]:=random(256)
min:=a[y,x]
minx:=1
miny:=y
maxX:=minx
maxY:=minY
First:=false
min:=a[y,x];
minx:=x;
miny:=y;
Текст программы:
Program N389;
Var a:array[1..100,1..100] of real;
x,y,m,n:Integer;
First:Boolean;
Min,Max:Real;
MinX,MinY,MaxX,MaxY:Integer;
Begin
writeln('Vvedite m, n');
readln(m,n);
For y:=1 to n do
For x:=1 to m do
Begin
a[x,y]:=random(256);
Writeln(a[y,x]:5:2);
end;
First:=True;
For y:=1 to n do
begin
min:=a[y,1];
minx:=1;
miny:=y;
For x:=1 to m do
if (min>a[y,x]) then
begin
min:=a[y,x];
minx:=x;
miny:=y;
end;
if (First)or(Max<min) then
Begin
Max:=min;
MaxX:=minx;
MaxY:=miny;
First:=false;
end;
end;
Writeln('Max element is ',max:5:2,' and indexes is X-',maxx,', Y-',maxy);
readln;
end.
Отчёт1:
Vvedite m, n
3
3
----
0.00 0.00 0.00
8.00 69.00 0.00
220.0 171.00 95.00
Max element is 95.00, and indexes X-3, Y-3
Отчёт2:
Vvedite m, n
2
2
----
0.00 0.00
8.00 51.00
Max element is 8.00, and indexes X-1, Y-2
Задача 3 (№485)
Условие:
Дан символьный файл f. Записать в файл g компоненты файла f в обратном порядке.
Блок-схема к задаче №389
Открытие файлов
a:=’ ‘
a:= a+s[i]
Закрытие файлов
Текст программы:
program lab3;
var fp, f:text;
s,a:string;
i:integer;
begin
assign(fp,'c:\f.txt');
reset(fp);
assign(f,'c:\g.txt');
rewrite(f);
read(fp,s);
a:='';
for i:=length(s) downto 1 do
a:=a+s[i];
write(f,a);
close(fp);
close(f);
end.
1.Отчёт:
Какая интересная книга.
.агинк яансеретни яакаК
2.Отчёт:
Мощная гидроэлектростанция была взорвана!!!
!!!анаврозв алыб яицнатсорткелэордиг яанщоМ
Задача 4 (№866В)
Условие:
Начертить узор, составленный из шестиугольников. Узор образован 20 вложенными квадратами. Стороны первого квадрата параллельны осям координат экрана и равны 60. Вершины каждого последующего квадрата - это точки на сторонах квадрата, делящие эти стороны в отношении н(Ню)=0.08
Блок-схема к задаче №866В
top:= 20;
left:=20;
moveto(l-dx+left,dy+top);
lineto(dy+left,dx+top);
l:=60;
dx:=0
dy:=0
lineto(dx+left,l-dy+top);
lineto(l-dy+left,l-dx+top);
lineto(l-dx+left,dy+top);
n:=20
nu:=0.08
dx1:=dx+round((l-dx-dy)*nu); dy1:=dy+round((dx-dy)*nu);
dx:=dx1;
dy:=dy1;
Текст программы:
Program N866V;
uses GraphABC;
Var z,dx, dy,dx1,dy1,l,n,i,gd,gm,top,left:integer;
a,nu:real;
procedure drawsq(dx,dy,l:integer);
begin
moveto(l-dx+left,dy+top);
lineto(dy+left,dx+top);
lineto(dx+left,l-dy+top) ;
lineto(l-dy+left,l-dx+top);
lineto(l-dx+left,dy+top);
end;
begin
top:=20; left:=20;
l:=60;
dx:=0; dy:=0;
n:=20;
nu:=0.08;
drawsq(dx,dy,l);
for i:=2 to n do begin
dx1:=dx+round((l-dx-dy)*nu);
dy1:=dy+round((dx-dy)*nu);
dx:=dx1;
dy:=dy1;
drawsq(dx,dy,l);
end;
readln;
end.
Отчет:
Рис.1
Рис.2
Полученный результат.
Задача 5 (№951)
Условие:
Круглое кольцо вращается с постоянной угловой скоростью, вокруг своего диаметра, расположенного параллельно горизонтальной оси экрана. Изобразить на экране процесс вращения. Считать, что в момент времени t кольцо выглядит для наблюдателя как эллипс, большая ось которого равна постоянной величине С, а малая равна С|coswt| где w-угловая скорость вращения. В правой части рис.101 приведено несколько последовательных изображений кольца, возникающих через равные промежутки времени. В левой части рисунка кольцо изображено сбоку.
Блок-схема к задаче №951
dy:=0
Ellipse(275,125-abs(round(R*cos(dy*pi/180))),475,125+abs(round(R*cos(dy*pi/180))));
Line(round(R*cos((dy+90)*pi/180))+125, round(R*sin((dy+90)*pi/180))+125, round(R*cos((dy-90)*pi/180))+125, round(R*sin((dy-90)*pi/180))+125);
Текст программы:
Program N951;
uses
crt,graphABC;
const
R=100;
var
dx,dy:integer;
begin
SetWindowCaption('pic. 101');
SetWindowSize(500,250);
dy:=0;
repeat
Ellipse(275,125-abs(round(R*cos(dy*pi/180))),475,125+abs(round(R*cos(dy*pi/180))));
Line(round(R*cos((dy+90)*pi/180))+125,
round(R*sin((dy+90)*pi/180))+125,
round(R*cos((dy-90)*pi/180))+125,
round(R*sin((dy-90)*pi/180))+125);
delay(40);
ClearWindow;
dY:=(dY+1)mod 360;
until KeyPressed;
readKey;
end.
Отчет:
Рис. 3
Рис.4
Задача 6 (№444)
Условие:
Даны натуральное число n, действительные числа Найти площадь n-угольника, вершины которого при некотором последовательном обходе имеют координаты (Определить процедуру вычисления площади треугольника по координатам его вершин.)
Блок-схема к задаче №444
x[i]:= random(20) - 10;
y[i]:= random(20) - 10;
res:=0;
a1:=
sqrt(sqr(x2-x1) + sqr(y2-y1)); a2:=
sqrt(sqr(x3-x2) + sqr(y3-y2)); a3:=
sqrt(sqr(x1-x3) + sqr(y1-y3));
p:= (a1 + a2 + a3) / 2;
square:=
sqrt(p * (p-a1) * (p-a2) * (p-a3));
res:=res+temp;
Текст программы:
Program N444;
function square(x1, y1, x2, y2, x3, y3: integer):real;
var
a1, a2, a3, p: real;
begin
a1:= sqrt(sqr(x2-x1) + sqr(y2-y1));
a2:= sqrt(sqr(x3-x2) + sqr(y3-y2));
a3:= sqrt(sqr(x1-x3) + sqr(y1-y3));
p:= (a1 + a2 + a3) / 2;
square:= sqrt(p * (p-a1) * (p-a2) * (p-a3));
end;
const
n = 20;
var
x, y: array[1..n] of integer;
temp,res: real;
i: integer;
begin
randomize;
for i:= 1 to n do
begin
x[i]:= random(20) - 10;
y[i]:= random(20) - 10;
end;
res:=0;
for i:= 3 to n do
begin
writeln(' Координаты треугольника', i-2, ': ', x[1]:4, y[1]:4, x[2]:4, y[2]:4, x[i]:4, y[i]:4);
temp:= square(x[1], y[1], x[2], y[2], x[i], y[i]);
res:=res+temp;
writeln('Площадь треугольника ', i-2, ' = ', temp:10:2);
writeln;
end;
writeln('Общая площадь равна: ',res);
readln;
end.
Отчет:
Координаты треугольника1: -5 8 -3 7 -9 -10
Площадь треугольника 1 = 20.00
Координаты треугольника2: -5 8 -3 7 -5 -10
Площадь треугольника 2 = 18.00
Координаты треугольника3: -5 8 -3 7 -8 -8
Площадь треугольника 3 = 17.50
Координаты треугольника4: -5 8 -3 7 3 0
Площадь треугольника 4 = 4.00
Координаты треугольника5: -5 8 -3 7 -6 -6
Площадь треугольника 5 = 14.50
Координаты треугольника6: -5 8 -3 7 -9 -4
Площадь треугольника 6 = 14.00
Координаты треугольника7: -5 8 -3 7 -3 9
Площадь треугольника 7 = 2.00
Координаты треугольника8: -5 8 -3 7 7 8
Площадь треугольника 8 = 6.00
Координаты треугольника9: -5 8 -3 7 4 -1
Площадь треугольника 9 = 4.50
Координаты треугольника10: -5 8 -3 7 8 2
Площадь треугольника 10 = 0.50
Координаты треугольника11: -5 8 -3 7 9 -4
Площадь треугольника 11 = 5.00
Координаты треугольника12: -5 8 -3 7 2 0
Площадь треугольника 12 = 4.50
Координаты треугольника13: -5 8 -3 7 2 -2
Площадь треугольника 13 = 6.50
Координаты треугольника14: -5 8 -3 7 0 -9
Площадь треугольника 14 = 14.50
Координаты треугольника15: -5 8 -3 7 9 -8
Площадь треугольника 15 = 9.00
Координаты треугольника16: -5 8 -3 7 5 -3
Площадь треугольника 16 = 6.00
Координаты треугольника17: -5 8 -3 7 9 5
Площадь треугольника 17 = 4.00
Координаты треугольника18: -5 8 -3 7 9 1
Площадь треугольника 18 = 0.00
Общая площадь равна: 150.5
Список литературы.
1.Абрамов С.А. Задачи по программированию / Абрамов С.А., Гнездилова Г.Г., Капустина Е.Н. Задачи по программированию.- М.: Наука,1988.
2.Семакин И.Г. Основы программирования / Семакин И.Г., Шестаков А.П. Основы программирования – 2-е изд., стер. – М.: Изд. центр “Академия”, 2003. – 432 с.
3.Епанешников А.М. Программирование в среде TURBO PASCAL 7.0. / Епанешников А.М., Епанешников В.А. Программирование в среде TURBO PASCAL 7.0. – 3-е изд., стер. – М.: ДИАЛОГ - МИФИ, 1996. – 288 с.
4.Алексеев В.Е., Ваулин А.С. Практикум по программированию: Практ. Пособие для вузов // Электронные вычислительные машины: В 8 кн. 2-е изд., перераб. И доп. – М.: Высш. Шк., 1993. Кн. 7. – 207 с.
5. Программирование в системах TURBO BASIC и TURBO PASCAL: Методические указания к лабораторным работам 10 – 16 / Составители А.Н. Ильгачев, А.И. Козлов; Чуваш. Ун-т. Чебоксары, 2004.
6. Программирование в системах TURBO BASIC и TURBO PASCAL: Методические указания к лабораторным работам 17 - 20 / Составители А.Н. Ильгачев, А.И. Козлов; Чуваш. Ун-т. Чебоксары, 2004