Р. А. Юсупов, С. Н. Искандарова, Ш. Мирзанова C/C++ тилида топшириқ ва масалалар Самарқанд – 2013 йил
Download 1.35 Mb.
|
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling