Р. А. Юсупов, С. Н. Искандарова, Ш. Мирзанова C/C++ тилида топшириқ ва масалалар Самарқанд – 2013 йил


Download 1.35 Mb.
bet104/105
Sana13.04.2023
Hajmi1.35 Mb.
#1353566
TuriУчебник
1   ...   97   98   99   100   101   102   103   104   105
Bog'liq
CPP masalalari1


Часть II. Решения 229
void а(int i)
{
if (i > 0) {
d(i-l); my_lineto(getx() - u, getyO);
a(i-l); my_lineto(getx(), getyO + u) ;
a(i-l); my lineto (getx () + u, getyO);
b(i-l);
}
}
void b(int i)
{
if (i > 0)
{
c(i-l); my_lineto(getx(),gety0 - u);
b{i-l); my_lineto(getx() + u, getyO);
b(i-l); my_lineto(getx(),gety() + u);
a(i-l);
}
void с(int i)
{
if (i > 0) {
b(i-l)/ my_lineto(getx() + u,gety());
с(1-1); my__lineto(getx(), getyO - u) ;
c(i-l); my_lineto(getx() - u^getyO);
d(i-l);
void ci(int 1 )
{
if (i > 0) {
a(l--l); my__lineto(getx() ,gety 0 + u);
d(i-l); my_lineto(getx() - u,gety());
d(i-l); my lineto(getx(),gety() - u);
c(i-l);
230 C/C-f-^- в задачах и примерах
// вычерчивает по точкам линию
void my_lineto(int х2, int у2)
{
int х1,у1; // координаты начала прямой
// х2, у2 — координаты конца
int х,у; // координаты текущей точки
int dx; // приращение аргумента
int dy; // приращение у при рисовании
// вертикальной линии
int color; // цвет линии
int a,b; // коэф-ты уравнения прямой
int п; // кол-во точек
int i;
xl = getx();
yl = gety();
if ( xl != x2 )
{
//не вертикальная линия
a = (у2-у1)/(х2-х1);
b == yl- a * xl;
n = abs{x2-xl)+l;
if (x2 > xl)
dx = 1;
else dx = -1;
X = xl;
color = getcolor();
for (i = 1; i<= n; i++)
{
у = a*x + b;
putpixel(x,y,color);
delay(DT);
X += dx;
}
}
else { // вертикальная линия
n = abs(у2-у1);
if (у2 > yl)
dy = 1;
else dy = -1;
X = xl;
Часть II. Решения 231
У = у1;
color = getcolor();
for (i = 1; i<=n; i++)
{
putpixel(x, y, color);
delay(DT);
у += dy;
}
}
putpixel(x2, у2, color);
moveto(x2, у2);
Задача 252
// Кривая Серпинского
#define u 5 // Длина штриха, определяет величину кривой
#define DT 25 // определяет скорость вычерчивания кривой
#define PATHTODRIVER "с:\\borlandc\\bgi\\"
#include
#include
#include
#include
// кривая Серпинского состоит из четырех
// элементов: а, Ъ, end
/I каждый элемент строит соответствующая функция
void а(int i);
void b(int i);
void с(int i);
void d(int i);
// вычерчивает прямую из текущей точки в заданную
// координаты конца задаются в приращениях
#define linetodxy(dx,dy) lineto(getx()+dx,gety()+dy)
void far lineto(int x2, int у2); // вычерчивает линию no
// точкам
// заменяет стандартную функцию, чтобы
// процесс вычерчивания кривой Серпинского можно было видеть
232 C/C++ в задачах и примерах
I/ элементы кривой
void а
{
if
{
(int :
(i >
a(i-
b(i-
d(i-
a(i-
L)
0)
-1)
-1)
-1)
-1)
linetodxy(u, u);
linetodxy(2*u,0);
linetodxy(u, -u);
}
void b(int i)
{
if (i > 0)
{
b(i-l);linetodxy(-u,u);
c(i-l);linetodxy(0, 2*u);
a(i-1);linetodxy(u,u);
b(i-l);
}
void с(int i)
{
if (i > 0)
{
c(i-l);linetodxy(-u,-u);
d(i-l);linetodxy(~2*u,0);
b{i--l) ;linetodxy (-u,u) ;
c(i-l);
}
void d(int i)
{
if (i > 0)
{
d(i-l);linetodxy(u,~u);
a(i-l);linetodxy{0,-2*u);
с (1-1);linetodxy(-U,-u);
Download 1.35 Mb.

Do'stlaringiz bilan baham:
1   ...   97   98   99   100   101   102   103   104   105




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling