Код для задачи 6. Под задание 5 попробуй подогнать самостоятельно. Точки треугольника по координатам (х, у) описывает класс TriangleStruct. Атрибут MainWin._graphstack_buffer - буфер, в котором хранятся экземпляры TriangleStruct. MainWin._graphstack_depth - максимальная длина для буфера объектов. Логика отрисовки описана в методе MainWin.draw_triangles. Метод MainWin.build реализует построение самого окна приложения (за исключением размеров окна, и прочих настроек родительского виджета. Это описано после блока if __name__ == '__main__'). Для самостоятельного ввода параметров треугольника, который нужно нарисовать, вы можете добавить поля ввода tk.Entry (их описание должно находиться в методе MainWin.build) для ввода координат вершин.
Uses GraphABC; procedure Draw(x, y, l, u : Real; t : Integer);
procedure Draw2(Var x, y: Real; l, u : Real; t : Integer); begin Draw(x, y, l, u, t); x := x + l*cos(u); y := y - l*sin(u);end; begin if t > 0 then beginl := l/3;Draw2(x, y, l, u, t-1);Draw2(x, y, l, u+pi/3, t-1); Draw2(x, y, l, u-pi/3, t-1);Draw2(x, y, l, u, t-1);end else Line(Round(x), Round(y), Round(x+cos(u)*l), Round(y-sin(u)*l))end; begin SetWindowSize(425,500); SetWindowCaption('Фракталы: Снежинка Коха'); Draw(10, 354, 400, pi/3, 4);Draw(410, 354, 400, pi, 4); Draw(210, 8, 400, -pi/3, 4);end.
// PascalABC.NET 3.0, сборка 1073 const nn=30; mm=30; var a:array[1..mm,1..nn] of integer; m,n,i,j,k,s:integer; begin Writeln('Введите число строк и столбцов массива: '); Read(m,n); Randomize; Writeln('*** Исходный массив ***'); k:=0; for i:=1 to m do begin for j:=1 to n do begin a[i,j]:=Random(51)-25; Write(a[i,j]:4); if Odd(a[i,j]) then Inc(k) end; Writeln end; if k>5 then begin Writeln('Средние арифметические отрицательных элементов по строкам'); for i:=1 to m do begin s:=0; k:=0; for j:=1 to n do if a[i,j]<0 then begin Inc(k); s:=s+a[i,j] end; if k>0 then Writeln(s/k:9:5) else Writeln(' 0.00000'); end end else begin Writeln('*** Результирующий массив ***'); for i:=1 to m do begin for j:=1 to n do begin a[i,j]:=2*a[i,j]; Write(a[i,j]:4) end; Writeln end end end.
import tkinter as tk
import random
import threading
import time
class TriangleStruct(object):
def __init__(self, fx, fy, sx, sy, thx, thy):
self.leftuppercorner = {'leftupper_x': fx, 'leftupper_y' : fy}
self.secondcorner = {'middle_x': sx, 'middle_y':sy}
self.thirdcorner = {'lower_x' : thx, 'lower_y':thy}
class MainWin(tk.Frame):
def __init__(self, root):
super().__init__(root)
self.avaiable_colors = ['orange', 'red', 'green', 'yellow', 'purple']
self._graphstack_depth = 7
self._graphstack_buffer = []
self.build()
def build(self):
self.canv = tk.Canvas(self, width = 640, height = 480)
self.canv.pack()
threading.Thread(target=self.infinity_triangle_drawing).start()
def draw_triangles(self):
for step in range(self._graphstack_depth):
self._graphstack_buffer.append(self.gen_rand_triangle())
for step in range(self._graphstack_depth):
self.canv.create_polygon(
(self._graphstack_buffer[step].leftuppercorner['leftupper_x'], self._graphstack_buffer[step].leftuppercorner['leftupper_y']),
(self._graphstack_buffer[step].secondcorner['middle_x'], self._graphstack_buffer[step].secondcorner['middle_y']),
(self._graphstack_buffer[step].thirdcorner['lower_x'], self._graphstack_buffer[step].thirdcorner['lower_y']),
fill = random.choice(self.avaiable_colors),
outline = 'black'
)
def gen_rand_triangle(self):
firstxpos, firstypos = random.randint(0, 540), random.randint(0, 380)
secxpos, secypos = random.randint(10, 620), random.randint(10, 440)
thirdxpos, thirdypos = random.randint(0, 620), random.randint(20, 440)
return TriangleStruct(firstxpos, firstypos, secxpos, secypos, thirdxpos, thirdypos)
def infinity_triangle_drawing(self):
while True:
self._graphstack_buffer.clear()
self.draw_triangles()
time.sleep(0.1)
self.canv.delete('all')
if __name__ == '__main__':
root = tk.Tk()
win = MainWin(root)
win.pack()
root.title('triangles')
root.resizable(False, False)
root.geometry('650x490')
root.mainloop()
Объяснение:
Код для задачи 6. Под задание 5 попробуй подогнать самостоятельно. Точки треугольника по координатам (х, у) описывает класс TriangleStruct. Атрибут MainWin._graphstack_buffer - буфер, в котором хранятся экземпляры TriangleStruct. MainWin._graphstack_depth - максимальная длина для буфера объектов. Логика отрисовки описана в методе MainWin.draw_triangles. Метод MainWin.build реализует построение самого окна приложения (за исключением размеров окна, и прочих настроек родительского виджета. Это описано после блока if __name__ == '__main__'). Для самостоятельного ввода параметров треугольника, который нужно нарисовать, вы можете добавить поля ввода tk.Entry (их описание должно находиться в методе MainWin.build) для ввода координат вершин.