Автор работы: Пользователь скрыл имя, 01 Мая 2013 в 03:20, отчет по практике
Задание 1. Фото-мозаика.
Условие задачи. В архиве находятся несколько файлов. В них - фрагменты одной фотографии. Написать программу, составляющую из фрагментов целую фотографию.
Требования:
подобрать размеры графического окна в соответствии с параметрами фотографии (размер и ориентация книжная или альбомная);
полученное фото расположить в указанной части графического окна;
ЗАДАЧА 1. 2
ЛИСТИНГ К ЗАДАЧЕ 1. 3
РИСУНОК К ЗАДАЧЕ 4
ЗАДАЧА 2. 4
ЛИСТИНГ К ЗАДАЧЕ 2. 4
РИСУНОК К ЗАДАЧЕ 5
ЗАДАЧА 3. 5
ЛИСТИНГ К ЗАДАЧЕ 3. 5
РИСУНОК К ЗАДАЧЕ 6
ЗАДАЧА 4. 6
ЛИСТИНГ К ЗАДАЧЕ 4. 6
РИСУНОК К ЗАДАЧЕ 9
ЗАДАЧА 5. 9
ЛИСТИНГ К ЗАДАЧЕ 5. 9
РИСУНОК К ЗАДАЧЕ 10
ЗАДАЧА 6. 10
ЛИСТИНГ К ЗАДАЧЕ 6. 10
РИСУНОК К ЗАДАЧЕ 11
ЗАДАЧА 7. 11
ЛИСТИНГ К ЗАДАЧЕ 7. 12
РИСУНОК К ЗАДАЧЕ 13
ЗАДАЧА 8. 14
ЛИСТИНГ К ЗАДАЧЕ 8. 14
РИСУНОК К ЗАДАЧЕ 17
ЗАДАЧА 9 17
ЛИСТИНГ К ЗАДАЧЕ 9. 17
РИСУНОК К ЗАДАЧЕ 20
Требования:
ЛИСТИНГ К ЗАДАЧЕ 6.
Program zd_6;
uses CRT,GraphABC;
var pic,CenterW,CenterH:integer;
a:string;
begin
hideCursor;
TextSize(26);
SetWindowSize(1100,760);
CenterWindow;
SetWindowCaption('Разгадать ребус!');
CenterW:= trunc(WindowWidth/2); //Определяет половину ширины окна
CenterH := trunc(WindowHeight/2);//
SetFontSize(50);
SetFontStyle(fsBold);
setFontName('Times');
pic := LoadPicture ('e:\семестр4\вычислительная
практика\лешкевич\результат задания
№6\Zd_6\Z6_pictures\ребус15_1.
DrawPicture (pic, 60, CenterH+20);
//SetFontSize(40);
setfontcolor(clRed); //Устанавливает цвет шрифта.
TextOut(70,500,'321');
SetFontSize(40);
TextOut(200,360,',');
pic := LoadPicture ('e:\семестр4\вычислительная
практика\лешкевич\результат задания
№6\Zd_6\Z6_pictures\ребус15_2.
DrawPicture (pic, 220, CenterH+20);
SetFontSize(30);
TextOut(260,500,' ');
pic := LoadPicture ('e:\семестр4\вычислительная
практика\лешкевич\результат задания
№6\Zd_6\Z6_pictures\ребус15_3.
DrawPicture (pic, 450, CenterH+20);
SetFontSize(40);
TextOut(490,500,'31');
SetPenColor(clBlue );
Line(10,CenterH,WindowWidth,
//даполнительные буквы ребуса
SetFontSize(65);
setfontcolor(clBlue );
//SetFontColor(RGB(123,79,35))
TextOut(370,CenterH+40,'И');
SetFontStyle(fsNormal);
SetFontName('Arial');
SetFontSize(30);
Writeln;
Writeln('Введите слово-отгадку':45);
writeln;
writeln;
SetFontStyle(fsBold);
SetFontSize(24);
Write ('':20);
Read(a);//ввод слова отгадку
SetFontSize(12);
SetFontStyle(fsNormal);
Writeln;
if LowerCase(a)='алгоритм'
then
Begin
SetFontSize(20);
TextColor(2);
Writeln(' ':20,'Это правильно!');
end
else
begin
SetFontSize(20);
TextColor(12);
Writeln(' ':15,'Не верно...');
writeln;
TextColor(2);
Writeln(' ':15,'Правильный ответ - АЛГОРИТМ');
end;
end.
Результат выполнение программы
ЗАДАЧА 7.
Задание 7. Олимпийские игры.
Условие задачи. Написать программу для поднятия флагов трех государств на церемонии награждения в спортивном соревновании со звучанием гимна страны, занявшей первое место.
Требования:
ЛИСТИНГ К ЗАДАЧЕ 7.
program z7;
uses
GraphABC, Sounds;
Procedure Perva9(i:integer);
begin
SetBrushColor(clWhite);
FillRect(0,600-(i+140) ,210,500-i+90 );
Line(50,600-(i+140),50,0);
Line(150,600-(i+140),150,0);
Rectangle(20,600-(i+50),180,
Rectangle(20,600-(i+50),60,
Rectangle(20,600-(i+110),60,
Rectangle(90,600-(i+50),180,
Rectangle(90,600-(i+110),180,
Floodfill(30,600-(i+90),
TextOut(70,600-(i+40),'Латвия'
sleep(70);
end;
Procedure Btora9(i:integer);
begin
SetBrushColor(clwhite);
FillRect(200,600-(i+100) ,410,500-i+90 );
Line(250,600-(i+190),250,0);
Line(350,600-( i+190),350,0);
Rectangle(220,600-(i+100),380,
Rectangle(220,600-(i+100),260,
Rectangle(220,600-(i+160),260,
Rectangle(290,600-(i+100),380,
Rectangle(290,600-(i+160),380,
Floodfill(225,600-(i+110),
Floodfill(225,600-(i+150),
Floodfill(225,600-(i+180),
floodfill(350,600-(i+180),
floodfill(350,600-(i+110),
TextOut(270,600-(i+90),'
sleep(70);
end;
Procedure Tretb9(i:integer);
begin
SetBrushColor(clWhite);
FillRect(400,600-i+90 ,610,500-i+90);
Line(450,500-i+90,450,0);
Line(550,500-i+90,550,0);
Rectangle(420,600-i,580,600-(
line(470,600-i,470,600-(i+90))
line(525,600-i,525,600-(i+90))
FloodFill(430,600-(i+80),
FloodFill(480,600-(i+80),
FloodFill(550,600-(i+80),
TextOut(470,600-i,'Колумбия');
sleep(70);
end;
var i,j,r,n: integer;
begin
{Рисование графического окна}
SetWindowSize(600,610);
CenterWindow;
SetWindowCaption(' Победитель - Гвинея');
{Подключение звукового файла}
n:=LoadSound('e:\семестр4\
PlaySound(n);
for i:=1 to 390 do
Begin
SetBrushColor(clWhite);
Perva9(i);
Btora9(i);
Tretb9(i);
end;
While soundIsPlaying(n) do
end.
Результат выполнение программы
ЗАДАЧА 8.
ФУНКЦИИ ДЛЯ ПОСТРОЕНИЯ ГРАФИКА
ПО ВАРИАНТАМ
Задание 8. График функции.
Условие задачи. Написать программу для построения графика функции на заданном отрезке.
Требования:
Вариант № 15.
на отрезке [–3p/2; 2p].
ЛИСТИНГ К ЗАДАЧЕ 8.
Program Z8;
Uses CRT, GraphABC;
Var a1, b1, x,y,h:real;
n,a,b,c:integer;
Function F(x:real):real;
Begin
F:=a+b*cos(x)-sin(c*x);
End;
procedure MaxMin(a1, b1, h : real; var ymin, ymax : real);
var x,y:real;
begin
ymin:=F(a); ymax:=ymin;
x:=a1;
while x < b1+h/2 do
begin
y:=F(x);
if y < ymin then
ymin:=y;
if y > ymax then
ymax:=y;
x:=x+h
end
end;
procedure GrFunc(a1, b1 : real; n : integer);
var ymin, ymax, x, y, h, Mx, My : real;
xg, yg, xgp, ygp, ox, oy,
x0, y0, xW, yH, i : integer;
function prx(x : real):integer;
begin
prx:=round(x0+(x-a1)*Mx)
end;
function pry(y : real):integer;
begin
pry:=round(y0+(ymax-y)*My)
end;
begin
h:=(b1-a1)/n; MaxMin(a1,b1,h,ymin,ymax);
x0:=300; xW:=WindowWidth div 2 +150;
y0:=100; yH:=WindowHeight div 2+150;
Mx:=(xW-x0)/(b1-a1);
My:=(yH-y0)/(ymax-ymin);
{ Выводятся оси }
if ymin*ymax < 0 then
begin
oy:=pry(0);
Line(x0,oy,xW,oy);
TextOut( xW-15,oy+10,'Ox')
end;
if a1*b1 < 0 then
begin
ox:=prx(0);
Line(ox,y0,ox,yH);
TextOut( ox+10,y0+15,'Oy')
end;
x:=a1;y:=f(a1);
xgp:=prx(x); ygp:=pry(y);
for i:=1 to n do
begin
x:=x+h; y:=f(x);
xg:=prx(x); yg:=pry(y);
Line(xgp,ygp,xg,yg);
xgp:=xg; ygp:=yg;
end;
end;
begin
writeln('Введите a: '); readln(a);
writeln('Введите b: '); readln(b);
writeln('Введите c: '); readln(c);
n:=50;
a1:=-3*pi/2;
b1:=2*pi;
GrFunc(a1,b1,n);
begin
{--- строим шапку таблицы --- }
writeln('_____________________
writeln('! x ! y !');
writeln('_____________________
{--- находим и выводим значения функции
для рисовния границы используем символы подчеркивания и восклицательного знака --- }
h:=1.0; {--- шаг деления отрезка --- }
x:=a1;
while x <=b1 do
begin
y:=f(x);
writeln('!', x:8:2, ' !', y:8:2, ' !'); {--- --- }
x:=x+h;
end;
writeln('_____________________
end;
TextOut(240,260,'-3*pi/2 ');
Circle(297,240,3);
TextOut(470,260,'2pi');
Circle(470,240,3);
end.
Результат выполнение программы
ЗАДАЧА 9.
Задание 9. Диаграммы.
Условие задачи. Имеется набор числовых данных. Написать программу вычисления по данным некоторых значений и построения диаграмм.
Требования:
ЛИСТИНГ К ЗАДАЧЕ 9.
Program Z9;
Uses Crt,GraphABC;
Type mass = array[1..11] of string;
{Создадим массив
из строк с названиями пустынь,
mas = array [1 .. 11] of integer;
Var
a,c, otkl:mas;
{массив номеров цветов для изображения секторов}
v : mass;
{массив из строк для надписи легенды}
p : mass;
{массив
из процентов для каждой
i,n,m,s,x1,sr,x2,max,h,xi,k1,
k:real;
z:string;
Begin
//-------------------круговая диаграмма------------------
{Массив надписей для легенды}
v[1]:='Сахара';
v[2]:= 'Гоби';
v[3]:= 'Калахари ';
v[4]:= 'Большая песчаная';
v[5]:= 'Каракумы';
{Определение массива цветов для построения диаграммы}
SetPixel(100,100,clRed);
c[1]:=GetPixel(100,100);
SetPixel(100,100,clGreen);
c[2]:=GetPixel(100,100);
SetPixel(100,100,clBlue);
c[3]:=GetPixel(100,100);
SetPixel(100,100,clYellow);
c[4]:=GetPixel(100,100);
SetPixel(100,100,clMedGray );
c[5]:=GetPixel(100,100);
{ Массив площадей пустынь }
a[1]:=900;
a[2]:=130;
a[3]:=90;
a[4]:=36;
a[5]:=35;
{a[1]:=35;
a[2]:=36;
a[3]:=90;
a[4]:=130;
a[5]:=900; }
{Сколько градусов круга приходится на 1 тыс.км.кв.}
s:=0;
For i:=1 to 5 do s:=s+a[i];
k:=360/s;
{построение закрашенного прямоугольника,
в котором будет выведена легенда диаграммы}
SetBrushColor(clSkyBlue);
RecTangle(390,200,640,300);
// SetFontStyle(fsNormal);
For i:=1 to 5 do
begin
SetBrushStyle(bsSolid);
SetBrushColor(C[i]);
{Построение сектора}
Pie(435,(i+1)*15+205,20,0,90);
{Перевод процентов количества площадей каждой пустыни в текст}
Str(trunc((A[i]/s)*100),P[i]);
{Вывод чисел и знака % впереди секторов}
TextOut(400,(i+1)*15+187,P[i]+
{Вывод текста обозначающей каждую пустыню}
TextOut(455,217+(i-1)*15,V[i])
end;
{ Построение круговой диаграммы }
x1:=0;
x2:=0;
{Начальное значение угла сектора}
For i:=1 to 5 do
If a[i]<>0 then
begin
{Сколько градусов приходится на одну пустыню}
m:=trunc(k*a[i]);
{Цвет закраски выбираем из созданного нами массива цветов}
SetBrushColor(C[i]);
{Подготавливаем углы для каждой пустыни, х1 - первое значение угла,
х2 - второе значение угла сектора}
x1:=x2;
x2:=x2+m;
If i=5 then
Pie(200,250,100,x1,360)
else
Pie(200,250,100,x1,x2);
{Для последнего сектора пишем второй угол 360, чтобы не было не закрашенного промежутка, который образуется из-за округления чисел}
end;
{ создание таблицы исходных данных }
writeln('_____________________
writeln('|Название | Местонахождение | Площадь | % |');
writeln('_____________________
writeln('|',v[1]:17,' | Африка |',a[1]:3,' |',(a[1]/s)*100:3:2,' |');
writeln('|',v[2]:17,' | Евразия |',a[2]:3,' |',(a[2]/s)*100:3:2,' |');
writeln('|',v[3]:17,' | Африка |',a[3]:3,' |',(a[3]/s)*100:3:2,' |');
writeln('|',v[4]:17,' | Австралия |',a[4]:3,' |',(a[4]/s)*100:3:2,' |');
Writeln('|',v[5]:17,' | Евразия |',a[5]:3,' |',(a[5]/s)*100:3:2,' |');
Writeln('|____________________
//--------------------
readln;
clrscr;
SetWindowSize(800,400);
v[1]:='Симпсон';
v[2]:='Кызылкум';
v[3]:='Сонора';
v[4]:='Мохаве';
v[5]:='Сечура';
V[6]:='Атакама'
{ массив площадей }
a[1]:=170;//000;
a[2]:=300;//000;
a[3]:=311;//000;
a[4]:=57;//000;
a[5]:=188;//000;
a[6]:=181;//000
{ нахождение средней площади }
s:=0;
for i:=1 to 6 do
begin
s:=s+a[i];
end;
sr:=s div 6;
{ оси координат }
SetPenWidth(3);
line(50,200,740,200);
line(50,20,50,380);
{рассчет ширины прямоугольника для каждой пустыни}
h:=100;
{нахождение отклонений }
for i:=1 to 6 do
begin
otkl[i]:=sr-a[i];
end;
{сортировка по возрастанию}
for i:=1 to 6 do
for j:=i+1 to 6 do
if a[i]>a[j] then begin
b:=a[i];
a[i]:=a[j];
a[j]:=b;
z:=v[i];
v[i]:=v[j];
v[j]:=z;
end;
for i:=1 to 6 do
Write(a[i], ' ');
{нахождение отклонений }
for i:=1 to 6 do
begin
otkl[i]:=sr-a[i];
end;
{}
{вычисление коэффициента