Программы в паскале (довольно сложные, н оинтересные)) - 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 и выполняет следующие действия:

  1. Объявляет переменные gd, gm, x1, y1, x2, y2, d1, i, j, r:integer; g, v:byte; f:text;
  2. Задает начальные значения для переменных g и v, считывая их из файла kon.txt.
  3. Инициализирует графическую среду с помощью функции initgraph.
  4. Определяет размер клеток, устанавливая d1 равным round((getmaxY-60)/8).
  5. Устанавливает радиус r, разделив d1 на 2.
  6. Вычисляет начальные координаты x1 и y1, устанавливая x1 равным 30 и y1 равным 20.
  7. В цикле for...for...if...then рисует клетки, используя функцию Kletka. Если сумма индексов i и j нечетная, то рисуется светлая клетка, в противном случае - темная.
  8. В цикле for...for...outtextxy выводит подписи вертикальных и горизонтальных клеток.
  9. В цикле for...for...if...then рисует клетку с конем, используя функцию Kon.
  10. В цикле for...for...if...then рисует клетки, которые бъются, используя функцию Pole.
  11. Завершает работу с графической средой, используя функцию readln. Пожалуйста, обратите внимание, что в данном коде используются функции setcolor, setfillstyle, Bar, Circle, outtextxy, которые являются стандартными функциями языка Pascal и должны быть доступны в любой среде Pascal, поддерживающей графику.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.143 из 5
Похожие ответы