IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Часы
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Подскажите, как сделать часы на Паскале, лучше со стрелками. Очень надо! smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


тебе татушка нужна???

а так есть системный таймер :

Код
var Timer:longint absolute $0:$046c;


по этому адресу ~ 18.2 раза в секунду увеличивается значение на 1 (точнее 1000/55 ~= 18.18...). Можешь отслеживать изменения и каждые 18 увеличений прорисовывать новое положение стрелок. Не забудь каждые 1620 увеличений счетчика (90 секунд) ,корректировать значение часов на +2 сек.

Но это теория ,может тебя именно графическая реализация интересовала?

Сообщение отредактировано: volvo -


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 15
Пол: Мужской

Репутация: -  0  +


Если все лишнее убрать, то получится то, что тебе надо. ;)
Код

program clock;
uses crt,graph,dos;
var gb,gm,R:integer;x,y,x1,y1,u1,u,x2,y2,u2:real;
   i:integer;
   s:string[2];
   h,m,c,d,c1:word;
begin

 gb:=detect;
 initgraph(gb,gm,'c:\bp\bgi');

 R:=80;x:=320;y:=240;
    x1:=320;y1:=240;u:=-pi/2;
    x2:=320;y2:=240;

 setfillstyle(1,6);
 bar(0,300,640,480);

 setfillstyle(10,2);
 bar(0,0,640,300);

 setfillstyle(1,7);
 setcolor(7);
 sector(250,150,35,215,30,30);
 sector(390,150,325,360,30,30);
 sector(390,150,0,143,30,30);
 setlinestyle(0,0,3);
 line(250,150,270,170);
 line(390,150,370,170);
 bar(305,120,335,125);
 line(320,125,320,170);
 setlinestyle(0,0,1);
 sector(320,360,0,180,60,40);
 setfillstyle(1,6);setcolor(6);
 fillellipse(320,370,40,25);
 setfillstyle(1,7);
 fillellipse(320,240,R+20,R+20);
 setbkcolor(0);

 for i:=1 to 12 do
  begin
   u:=u+pi/6;
   x:=(R+10)*cos(u)+317;y:=(R+10)*sin(u)+237;
   str(i,s);
   outtextxy(round(x),round(y),s);
 end;

 for i:=1 to 60 do
  begin
   u:=u+pi/30;
   x:=(R+17)*cos(u)+320;y:=(R+17)*sin(u)+240;
   putpixel(round(x),round(y),1);
  end;

 for i:=1 to 12 do
  begin
   u:=u+pi/6;
   x:=(R+17)*cos(u)+320;y:=(R+17)*sin(u)+240;
   setcolor(1);
   setfillstyle(1,7);
   fillellipse(round(x),round(y),2,2);
   circle(round(x),round(y),2);
  end;
repeat
 gettime(h,m,c,d);
 if c1<>c then
  begin c1:=c;
 setcolor(7);
 line(320,240,round(x),round(y));
 line(320,240,round(x1),round(y1));
 setlinestyle(0,0,3);
 line(320,240,round(x2),round(y2));

 x2:=(R-23)*cos(u2)+320;y2:=(R-30)*sin(u2)+240;
 setcolor(9);
 line(320,240,round(x2),round(y2));
 setlinestyle(0,0,1);

 x1:=(R-15)*cos(u1)+320;y1:=(R-15)*sin(u1)+240;
 setcolor(1);
 line(320,240,round(x1),round(y1));

 x:=(R)*cos(u)+320;y:=(R)*sin(u)+240;
 setcolor(4);
 line(320,240,round(x),round(y));

 setcolor(4);
 setfillstyle(1,4);
 fillellipse(320,240,3,3);
 u:=(c+45)*pi/30;
 u1:=(m+45)*60*pi/1800;
 u2:=(h*5+m/15+45)*3600*pi/108000;
end;
until keypressed;
closegraph;
end.

По-моему это надо отправить в "Задачи"


--------------------
Не могу сидеть, когда другие работают.
Пойду полежу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Serega
Подскажи, где можно взять модуль dos.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Четыре квадратика
****

Группа: Пользователи
Сообщений: 579
Пол: Мужской

Репутация: -  4  +


Модуль DOS -- встроенный модуль Паскаля (в Borland/Turbo pascal for DOS как минимум)


--------------------
Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Спасибо, у меня ещё один вопрос: где-нибудь можно взять исходники часов?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 57
Пол: Мужской

Репутация: -  0  +


Какие именно тебе нужны исходники?
Тебе же привели уже программу с исходным кодом....


--------------------
Рассылка: "Решение Вами Предложенных Задач На Языке PASCAL. Алгоритмы на PASCAL."
Подписка по e-mail: comp.soft.prog.pascal123-sub@subscribe.ru
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Часы с этим кодом у меня бегают как бешеные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






А ты им успокоительное синсталлируй smile.gif
Пардон за флуд
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Знаток
****

Группа: Пользователи
Сообщений: 419
Пол: Мужской

Репутация: -  6  +


Pascal
а ты перед gettime поставь
Код
delay(100);


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






virt, а я бы Delay и не советовал. Работает он сейчас... Ну дай бог через 10 раз...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


вместа дэлая юзай системный таймер по адресу $40:$6c. smile.gif


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Ну вроде заработало.
Спасибо всем!
Тему можно закрывать.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Нет!!!
Тему закрывать нельзя.
Может кто-нибудь предоставит решение классической задачи "ЧАСЫ".
Пусть даны целые числа m,n (часы, минуты), 0 <= m <= 11, 0 <= n <= 59, определяющие время суток. Опеределить наименьшее время (число полных минут), которое должно пройти до того момента, когда часовая и минутная стрелки:
1. совпадут
2. расположатся перпендикулярно друг другу
(программа должна быть линейной[без циклов, ветвлений])
Задача взята из задачника Усковой "Программирование на языке Паскаль".
Чего то не доходит, как её решать!!! blink.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Прогрессор
****

Группа: Пользователи
Сообщений: 602
Пол: Мужской
Реальное имя: Михаил

Репутация: -  9  +


Для 1. надо воспользоваться тем фактом, что 11 точек совпадения стрелок делят циферблат на 11 равных частей.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






а может и мне поможете? у нас в школе началось программирование в паскале... и задал нам препод очень странную задачку : надо создать часы в формате часы:минуты:секунды , чтобы было 01 , 05 ( сек мин часов) и т.д. а также чтобы можно было устанавливать время самостоятельно, был будильник... сколько пробовал сделать не получается... wacko.gif то что получилось прекреплю...


Прикрепленные файлы
Прикрепленный файл  Gmail.zip ( 676 байт ) Кол-во скачиваний: 239
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Помощник капитана
****

Группа: Пользователи
Сообщений: 601
Пол: Мужской
Реальное имя: Артем

Репутация: -  2  +


Цитата
а также чтобы можно было устанавливать время самостоятельно

Но он у тебя каждый раз должен просто отсчет вперед вести (1 сек,2 сек, 3 сек, n сек) или все-таки время системное показывать?
Или ты имел ввиду настроить время для будильника?


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Помощник капитана
****

Группа: Пользователи
Сообщений: 601
Пол: Мужской
Реальное имя: Артем

Репутация: -  2  +


немного подделал по твоему наброску..Если не очень красиво, без обид. smile.gif
uses crt;
var i,k,m,d: integer;
f: boolean;
c: char;
dat: record
h,m,s: Integer;
end;
label 10,11;
begin
clrscr;
writeln('Press 2 to prepare the alarm clock!');
readln(d);
case d of
2: begin goto 10 end;
end;
11: for i:=0 to 23 do
begin
for k:=0 to 59 do
begin
for m:=0 to 59 do
begin
if not (2 <> d) then begin
if (i=Dat.h) and (k=Dat.m) and (m=Dat.s) then begin
gotoxy (11,11);
writeln('Stand up!');
f:=true;
break;
end;
end;
gotoxy (11,11);
delay (50000);
delay (50000);
delay (50000);
write(i,' з б®ў : ',k,' ¬Ё­гв : ',m,' ᥪ㭤');
end;
if f then break;
end;
if f then break; goto 10
end;
writeln('Do you want to exit? (y/n)');
readln( c);
case c of
'y': begin exit; end;
'n': begin writeln; end;
end;
10: writeln('Put your settings: ');
readln(Dat.h,Dat.m,Dat.s);
goto 11;


Сообщение отредактировано: Артемий2 -


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 11.10.2024 21:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name