Программы в паскале (довольно сложные, н оинтересные)) - Pascal
Формулировка задачи:
Всем доброго времени суток
. Пытаюсь написать программы. Никак не получается. Знакомые тоже не могут написать. Поэтому решил просить помощи у вас. Это уже стал вопрос жизни без преувеличений) Всего две программы, но, как я сказал, нелегкие. 1) Дано предложение. В нем только два слова одинаковые. найти эти слова. 2) Изобразить на экране шахматную доску. Из файла прочитать координаты коня и указать на рисунке, какое поля он бьет. Если кто-то сможет решить - буду очень благодарен (ну иначе просто никак). И просто пожелание, если кто сделает - как бы комментарии были бы не лишними) спасибо огромное!Решение задачи: «Программы в паскале (довольно сложные, н оинтересные))»
textual
Листинг программы
uses crt,graph; procedure Kletka(x1,y1,c:integer;d:integer);//рисование клеток begin Setcolor(c);//2 цвета, темный и светлый Setfillstyle(1,c); Bar(x1,y1,x1+d,y1+d);//закрашенные квадраты end; procedure Kon(v,g,x1,y1,r:integer);//поле с конем begin setcolor(2); setlinestyle(0,0,3); Circle(x1+r*(2*v-1),y1+r*(2*g-1),r-3); settextstyle(0,0,3); OuttextXY(x1+r*(2*v-1)-10,y1+r*(2*g-1)-10,'K'); end; procedure Pole(j,i,x1,y1,r:integer);//поля, которые бъются begin settextstyle(0,0,3); setcolor(1);//рисуем крестик синего цвета line(x1+r*(2*j-1)-10,y1+r*(2*i-1)-10,x1+r*(2*j-1)+10,y1+r*(2*i-1)+10); line(x1+r*(2*j-1)-10,y1+r*(2*i-1)+10,x1+r*(2*j-1)+10,y1+r*(2*i-1)-10); end; var gd,gm,x1,y1,x2,y2,d1,i,j,r:integer; g,v:byte; f:text; begin assign(f,'kon.txt'); reset(f); read(f,v,g);//читаем из файла 2 числа - 1-номер вертикали от 1 до 8 слева направо //2- номер горизонтали от 1 до 8 снизу вверх, наапример поле d5= 4 5 g:=8-g+1;//переворачиваем горизонтали initgraph(gd,gm,''); d1:=round((getmaxY-60)/8);//размер клеток r:=d1 div 2;//радиус Setcolor(4);//обрамление доски Rectangle(1,1,8*d1+50,8*d1+60); Setfillstyle(1,4); Bar(1,1,8*d1+50,8*d1+60); x1:=30;y1:=20;//начало координат for i:=1 to 8 do begin for j:=1 to 8 do if odd(i+j) then Kletka(x1+d1*(i-1),y1+d1*(j-1),15,d1)//если нечетная сумма индексов - светлая клетка else Kletka(x1+d1*(i-1),y1+d1*(j-1),6,d1);//четная - темная end; Setcolor(0); for i:=0 to 7 do outtextxy(30+d1*i+d1 div 2,450,chr(ord(i+97)));//подписи вертикалей for i:=7 downto 0 do outtextxy(20,440-d1*i-d1 div 2,chr(ord(i+49)));//подписи горизонталей Kon(v,g,x1,y1,r);//клетка с конем for i:=1 to 8 do for j:=1 to 8 do if ((abs(i-g)=1)and(abs(j-v)=2))or((abs(i-g)=2)and(abs(j-v)=1))then Pole(j,i,x1,y1,r);//клетки которые бъются readln; end.
Объяснение кода листинга программы
Этот код написан на языке Pascal и выполняет следующие действия:
- Объявляет переменные gd, gm, x1, y1, x2, y2, d1, i, j, r:integer; g, v:byte; f:text;
- Задает начальные значения для переменных g и v, считывая их из файла
kon.txt
. - Инициализирует графическую среду с помощью функции initgraph.
- Определяет размер клеток, устанавливая d1 равным round((getmaxY-60)/8).
- Устанавливает радиус r, разделив d1 на 2.
- Вычисляет начальные координаты x1 и y1, устанавливая x1 равным 30 и y1 равным 20.
- В цикле for...for...if...then рисует клетки, используя функцию Kletka. Если сумма индексов i и j нечетная, то рисуется светлая клетка, в противном случае - темная.
- В цикле for...for...outtextxy выводит подписи вертикальных и горизонтальных клеток.
- В цикле for...for...if...then рисует клетку с конем, используя функцию Kon.
- В цикле for...for...if...then рисует клетки, которые бъются, используя функцию Pole.
- Завершает работу с графической средой, используя функцию readln. Пожалуйста, обратите внимание, что в данном коде используются функции setcolor, setfillstyle, Bar, Circle, outtextxy, которые являются стандартными функциями языка Pascal и должны быть доступны в любой среде Pascal, поддерживающей графику.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д