Вопрос задан 08.05.2019 в 02:52. Предмет Информатика. Спрашивает Аксёнова Алёна.

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

всю программу как делать
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Деркач Захар.
Попробуй так Uses Graph, CRT;
   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.

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно, я могу помочь вам с написанием программы для создания циферблата часов на языке программирования Паскаль. Ниже приведен пример программы:

``` 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`.

Надеюсь, эта информация поможет вам создать программу для отображения циферблата часов на языке Паскаль. Если у вас возникнут дополнительные вопросы, пожалуйста, уточните их.

0 0

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

Последние заданные вопросы в категории Информатика

Задать вопрос