Описание структур данных

Для реализации задачи №1 была выбрана следующая структура данных:

A – массив от 1 до 200 типа integer (целочисленный тип) для хранения чисел;

I - переменная типа integer (целочисленный тип) предназначенная для хранения текущего числа;

Count - переменная типа integer (целочисленный тип) предназначенная для хранения количества найденных чисел.

Для реализации задачи №2 была выбранная следующая структура данных:

dx - переменная типа integer (целочисленный тип) предназначенная для инициализации графики;

angle - переменная типа integer (целочисленный тип) предназначенная для хранения угла поворота;

posx - переменная типа integer (целочисленный тип) предназначенная для хранения позиции звезды по х;

posy - переменная типа integer (целочисленный тип) предназначенная для хранения позиции звезды по у;

maxx, maxy - переменная типа integer (целочисленный тип) предназначенная для хранения максимальных значений координат экрана;

ainc - переменная типа integer (целочисленный тип) предназначенная для хранения приращения угла поворота;

xinc - переменная типа integer (целочисленный тип) предназначенная для хранения приращения позиции по х;

yinc - переменная типа integer (целочисленный тип) предназначенная для хранения приращения позиции по у;

k - переменная типа real (вещественный тип) предназначенная для хранения приращения коэффициента масштабирования;

kinc - переменная типа real (вещественный тип) предназначенная для хранения приращения коэффициента масштабирования.

4 Описание применяемого алгоритма к задаче №1:

Блок № 1 – dsum (i) вычисление суммы цифр числа i

Блок № 2 – sum:=0 сумма цифр

Блок № 3 – (i<>0)

Блок № 4 – sum:=sum+(i mod 10) к сумме цифр добавляем остаток от деления на 10,

i:=i div 10 числу i присваиваем целую часть от деления на 10

Блок № 5 – dsum:=sum

Блок № 6 – end

Блок № 7 – begin

Блок № 8 – count:=0 (количество выведенных чисел)

i:=1 (число которое мы будем проверять и искать)

Блок № 9 – count<>120 do (пока количество выведенных чисел не равно 120)

Блок № 10 – dsum (i) mod 10 = 0 (если сумма цифр числа кратна 10)

Блок № 11 – inc(count) (увеличиваем количество выведенных чисел)

a[count]:=i (заносим число в массив)

Блок № 12 – a[count] (выводим число)

Блок № 13 – inc(i) (проверяем следующее число)

Блок № 14 – end

Блок схема – 1

Блок схема – 2



5 Описание применяемого алгоритма к задаче №2:

Блок № 1 – DrawObj(x,y,a,k) (рисует один луч звезды)

(х,y – позиция нулевой точки для риосвания, а - угол поворота, к – масштабирующий коэффициент)

Блок № 2 – MoveTo(x,y) (для рисования: перемешаемся в точку х, у)

Блок № 3 – (вычисляем координаты для второй точки, первая х,у)

dx:=7*k*cos(a*3.14/180)

dy:=7*k*sin(a*3.14/180)

Блок № 4 – LineTo(x+round(dx),y+round(dy)) (проводим линию)

(рисуем вторую линию с углом поворота а и масштабом к)

Блок № 5 – a:=a+45;

Блок № 6 – dx:=20*k*cos(a*3.14/180)

dy:=20*k*sin(a*3.14/180)

Блок № 7 – LineTo(x+round(dx), y+round(dy)) (проводим линию)

(рисуем третью линию с углом поворота а и масштабом к)

Блок № 8 – a:=a+45;

Блок № 9 – dx:=7*k*cos(a*3.14/180)

dy:=7*k*sin(a*3.14/180)

Блок № 10 – LineTo(x+round(dx), y+round(dy)) (проводим линию)

Блок № 11 – end

Блок № 12 DrawStar(x,y,a,k) (рисует всю звезду путем рисования 4 лучей с разными углами наклона)

Блок № 13 DrawObj(x,y,-a,k)

Блок № 14 DrawObj(x,y,-a+90,k)

Блок № 15 DrawObj(x,y,-a+180,k)

Блок № 16 DrawObj(x,y,-a+270,k)

Блок № 17 end

Блок № 18 begin

Блок № 19 ainc:=random(40)-20 (на сколько увеличивать угол поворота

xinc:=random(40)-20 (на сколько увеличивать координату х)

Блок № 20 yinc:=random(40)-20 (на сколько увеличивать координату у)

angle:=random(90) (начальный угол поворота)

Блок № 21 posx:=100+random(200) (начальная позиция по х)

posy:=100+random(200) (начальная позиция по у)

Блок № 22 k:=1+random(20)/10 (начальный масштабирующий коэффициент)

kinc:=random(10)/10 (на сколько увеличивать масштаб)

Блок № 23 dx:=Detect (инициализация графики)

Блок № 24 InitGraph(dx,dy,'') (инициализация графики)

maxx:=getmaxx (узнаем размер экрана по х)

maxy:=getmaxy (узнаем размер экрана по у)

Блок № 25 ClearDevice (очищаем экран)

angle:=angle + ainc (изменяем угол поворота)

Блок № 26(angle > 360)

Блок № 27 angle:=angle – 360 (если угол больше 360, то надо вычесть из него 360)

Блок № 28 k+kinc>3) or (k+kinc<1)

Блок № 29 kinc:=-1*kinc (масштабирующий коэффициент должен быть больше 1 и меньше 3, иначе меняем знак у прирашения масштабирующего коэффициента на противоположенный)

Блок № 30 K:=k+kinc (изменяем масштабирующий коэффициент)

Блок № 31((posx+xinc+20*k>=maxx) or (posx+xinc-20*k<=0))

Блок № 32 xinc:= -1*xinc (координата х должна находиться на экране иначе меняем знак приращение по х на противоположенный)

Блок № 33((posy+yinc+20*k>=maxy) or (posy+yinc-20*k<=0))

Блок № 34 yinc:=-1*yinc (координата у должна находиться на экране иначе меняем знак приращение по у на противоположенный)

Блок № 35 posx:=posx+xinc (изменяем координату по х)

posy:=posy+yinc (изменяем координату по у)

Блок № 36 drawstar(posx,posy,angle,k) (рисуем звезду с заданными параметрами)

delay(250) (задержка 0.25 секунды)

Блок № 37 KeyPressed (повторяем пока не нажата кнопка)

Блок № 38 CloseGraph (закрываем графику)

Блок № 39 end.

Рисунок 7 – Тело программы, лист 1

Рисунок 8 – Тело программы, лист 2

Рисунок 9 – Тело программы, лист 3

Рисунок 10 – Тело программы, лист 4



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: