
Ребят нужна помощь) по информатике учитель сказал сделать циферблат часов паскаль) напиши подробно
всю программу как делать

Ответы на вопрос

var
d,r,r1,r2,rr,k,
x1,y1,x2,y2,x01,y01: Integer;
Xasp,Yasp : Word;
begin
{Инициируем графику}
d := detect;
InitGraph(d, r, ' ') ;
k:= GraphResult;
if k <> grOK then WriteLn(GraphErrorMSG(k))
else
begin
{Определяем отношение сторон и размеры экрана}
x1 := GetMaxX div 2;
y1 := GetMaxY div 2;
GetAspectRatio(Xasp, Yasp);
{Вычисляем радиусы:}
r:= round(3*GetMaxY*Yasp/8/Xasp);
r1 := round(0.9*r); {Часовые деления}
r2 := round(0.95*r); {Минутные деления}
{Изображаем циферблат}
Circle(x1,y1,r); {Первая внешняя окружность}
Circle(x1,y1,round(1.02*r)); {Вторая окружность}
for k := 0 to 59 do {Деления циферблата}
begin
if k mod 5=0 then
rr := r1 {Часовые деления}
else
rr:= r2 ; {Минутные деления}
{Определяем координаты концов делений}
x01 := x1+Round(rr*sin(2*pi*k/60));
y01 := y1-Round(rr*Xasp*cos(2*pi*k/60)/Yasp);
x2 := x1+Round(r*sin(2*pi*k/60));
y2 := y1-Round(r*Xasp*cos(2*pi*k/60)/Yasp);
Line(x01,y01,x2,y2) {Выводим деление}
end;
{Готовим вывод стрелок}
SetWriteMode(XORPut);
SetLineStyle(SolidLn,0,ThickWidth);
r := 0; {Счетчик минут в одном часе}
{Цикл вывода стрелок}
repeat
for k := 0 to 59 do {k = минуты}
if not KeyPressed then
begin
{Координаты часовой стрелки}
x2 := x1+Round(0.85*r1*sin(2*pi*r/60/12));
y2 := y1-Round(0.85*r1*Xasp*cos(2*pi*r/60/12)/Yasp);
{Координаты минутной стрелки}
x01:= x1+Round(r2*sin(2*pi*k/60));
y01:= y1-Round(r2*Xasp*cos(2*pi*k/60)/Yasp);
{Изображаем стрелки}
Line(x1,y1,x2,y2);
Line(x1,y1,x01,y01);
Delay(100); {Для имитации реального темпа
нужно установить задержку 60000}
{Для удаления стрелок выводим их еще раз!}
Line(x1,y1,x01,y01);
Line (x1,y1,x01,y01 ) ;
{Наращиваем и корректируем счетчик минут в часе}
inc(r);
if r=12*60 then
r := 0
end
until KeyPressed;
if ReadKey=#0 then k:=ord(ReadKey);
CloseGraph;
end
end.



Конечно, я могу помочь вам с написанием программы для создания циферблата часов на языке программирования Паскаль. Ниже приведен пример программы:
``` program Циферблат_часов;
uses Crt, Graph;
var gd, gm: smallint; hour, minute, second: word; x, y, radius: integer; angle: real; clock: array[1..12] of string;
procedure DrawClock(); var i: integer; begin // Отрисовываем циферблат Circle(x, y, radius); // Отрисовываем цифры на циферблате for i := 1 to 12 do begin OutTextXY(x + round(radius * cos(angle * i - pi / 2)) - TextWidth(clock[i]) div 2, y + round(radius * sin(angle * i - pi / 2)) - TextHeight(clock[i]) div 2, clock[i]); end; end;
procedure UpdateClock(); begin // Отрисовываем стрелки на циферблате Line(x, y, x + round(radius * 0.6 * cos(angle * (hour - 3) - pi / 2)), y + round(radius * 0.6 * sin(angle * (hour - 3) - pi / 2))); Line(x, y, x + round(radius * 0.8 * cos(angle * (minute - 15) - pi / 2)), y + round(radius * 0.8 * sin(angle * (minute - 15) - pi / 2))); Line(x, y, x + round(radius * 0.9 * cos(angle * (second - 15) - pi / 2)), y + round(radius * 0.9 * sin(angle * (second - 15) - pi / 2))); end;
begin // Инициализируем графический режим gd := Detect; InitGraph(gd, gm, ''); // Задаем параметры циферблата x := GetMaxX div 2; y := GetMaxY div 2; radius := 150; angle := 2 * pi / 12; // Задаем текст для цифр на циферблате clock[1] := '1'; clock[2] := '2'; clock[3] := '3'; clock[4] := '4'; clock[5] := '5'; clock[6] := '6'; clock[7] := '7'; clock[8] := '8'; clock[9] := '9'; clock[10] := '10'; clock[11] := '11'; clock[12] := '12'; while not KeyPressed do begin // Получаем текущее время GetTime(hour, minute, second, 0); // Очищаем экран ClearDevice; // Отрисовываем циферблат DrawClock(); // Обновляем положение стрелок UpdateClock(); // Отображаем изменения на экране Delay(1000); end; // Завершаем графический режим CloseGraph; end. ```
В данной программе используется графический режим Pascal, поэтому перед запуском программы убедитесь, что ваша среда разработки поддерживает графику.
Программа сначала инициализирует графический режим и задает параметры циферблата, такие как координаты центра (`x` и `y`) и радиус (`radius`). Затем она отрисовывает циферблат и цифры на нем с помощью функции `DrawClock()`.
В основном цикле программы происходит обновление положения стрелок на циферблате в соответствии со временем, полученным с помощью функции `GetTime()`. Функция `UpdateClock()` отвечает за отрисовку стрелок на циферблате.
Программа продолжает обновлять положение стрелок каждую секунду с помощью функции `Delay(1000)`, пока не будет нажата клавиша на клавиатуре.
После выхода из цикла графический режим закрывается с помощью функции `CloseGraph`.
Надеюсь, эта информация поможет вам создать программу для отображения циферблата часов на языке Паскаль. Если у вас возникнут дополнительные вопросы, пожалуйста, уточните их.


Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili