Важная информация
Показано с 1 по 9 из 9

Тема: Помогите пожалуйста поправить программу часов в qbasic

  1. #1 Помогите пожалуйста поправить программу часов в qbasic 
    Новичок
    Регистрация
    31.10.2012
    Сообщений
    4
    Сказал(а) спасибо
    3
    Поблагодарили 0 раз(а) в 0 сообщениях
    Здравствуйте, есть такая прога
    Код :
    CLS
     
    FOR y = 1 TO 24 STEP 1
            FOR x = 1 TO 60 STEP 1
                    FOR i = 0 TO 60 STEP 1
                    LOCATE 10, 42: PRINT i; "сек", "      "
                    SLEEP 1
                    NEXT i
            LOCATE 10, 34: PRINT x; "мин", "   "
            NEXT x
    LOCATE 10, 26: PRINT y; "час"
    NEXT y
     
    END
    проблема в том что когда доходит время до часа, то минуты не перезагружаются сразу, то есть останавливаютя на 60, а после того как пройдет еще минута, то минуты перезагружаются и начинает писать 1 и т.д. помогите пожалуйста.
    Последний раз редактировалось neur0ner; 31.10.2012 в 20:34.
    Ответить с цитированием  
     

  2. #2  
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,531
    Сказал(а) спасибо
    126
    Поблагодарили 428 раз(а) в 291 сообщениях
    Записей в блоге
    6
    Код qbasic:
    FOR y = 0 TO 23 STEP 1
            FOR x = 0 TO 59 STEP 1
                    FOR i = 0 TO 59 STEP 1
                    LOCATE 10, 42: PRINT i; "сек", "      "
                    SLEEP 1
                    NEXT i
            LOCATE 10, 34: PRINT x; "мин", "   "
            NEXT x
    LOCATE 10, 26: PRINT y; "час"
    NEXT y
     
    END
    Часы считают от нуля до 59 и от нуля до 23.
    Это можно доказать тем, что вы никогда не видели на часах такого времени: 24:37:32
    10:60:56
    18:30:60
    Но в то же время в полночь часы показывают 0:0:0.
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  3. #3  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    Я попробовал доработать программку, но в конечном итоге понял, что у меня у самого не получается исправить вывод в нескольких циклах, какие-бы диапазоны я не перебирал. Можно в вашем варианте добавить несколько условий, но я решил сделать проще:
    Код qbasic:
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    FOR y = 0 TO 23 STEP 1
            FOR x = 0 TO 59 STEP 1
                FOR i = 0 TO 59 STEP 1
                    [Ссылки могут видеть только зарегистрированные пользователи. ] 10, 20: [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ](25, " ")
                    [Ссылки могут видеть только зарегистрированные пользователи. ] 10, 20: [Ссылки могут видеть только зарегистрированные пользователи. ] y; "hour"; x; "min"; i; "sec"
                    [Ссылки могут видеть только зарегистрированные пользователи. ] 1
                NEXT i
            NEXT x
    NEXT y
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Несколько замечаний:
    Часы не будут очень точными из-за погрешности, которая определенно будет в процедуре SLEEP 1. Также, SLEEP прерывает задержку, при нажатии на клавишу клавиатуры.
    Можете попробовать этот вариант аналогичных часов:
    Код qbasic:
    [Ссылки могут видеть только зарегистрированные пользователи. ] I [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], Sec [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], Min [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], Hour [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    DO
        I = [Ссылки могут видеть только зарегистрированные пользователи. ]
        Sec = I [Ссылки могут видеть только зарегистрированные пользователи. ] 60: Min = I \ 60 [Ссылки могут видеть только зарегистрированные пользователи. ] 60: Hour = I \ 60 \ 60 [Ссылки могут видеть только зарегистрированные пользователи. ] 24
        [Ссылки могут видеть только зарегистрированные пользователи. ] 1, 1
        [Ссылки могут видеть только зарегистрированные пользователи. ] Hour; "hour"; Min; "min"; Sec; "sec"
    LOOP
    Он работает на базе того, что функция Timer всегда возвращает количество секунд, прошедшее с полуночи. Далее, в зависимости от этого количества, высчитывается реальное время, установленное на компьютере - часы, минуты, и секунды. Этот вариант - скорее часы, а ваш - "секундомер", замеряющий время. Можно заставить этот вариант отсчитывать время с нуля, как делает и ваш, если это нужно.
    Дружба-магия-радость!
    Ответить с цитированием  
     

  4. Пользователь сказал cпасибо:

    neur0ner (01.11.2012)

  5. #4  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    Kakos_nonos, а попробуйте подождать (или зажать клавишу) в данном варианте, пока не пройдет хотя-бы одна минута. По истечению минуты, у нас появится индикатор количества минут, но он начнет свой отсчет с нуля, а нужно - уже с одного.
    Дружба-магия-радость!
    Ответить с цитированием  
     

  6. #5  
    Новичок
    Регистрация
    31.10.2012
    Сообщений
    4
    Сказал(а) спасибо
    3
    Поблагодарили 0 раз(а) в 0 сообщениях
    Код qbasic:
    [Ссылки могут видеть только зарегистрированные пользователи. ] I [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], Sec [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], Min [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], Hour [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    DO
        I = [Ссылки могут видеть только зарегистрированные пользователи. ]
        Sec = I [Ссылки могут видеть только зарегистрированные пользователи. ] 60: Min = I \ 60 [Ссылки могут видеть только зарегистрированные пользователи. ] 60: Hour = I \ 60 \ 60 [Ссылки могут видеть только зарегистрированные пользователи. ] 24
        [Ссылки могут видеть только зарегистрированные пользователи. ] 1, 1
        [Ссылки могут видеть только зарегистрированные пользователи. ] Hour; "hour"; Min; "min"; Sec; "sec"
    LOOP
    Уже попробовал такое, почему то запускается с 20 часов 12 минут, а не с нуля
    А можно как нибудь по другому сделать?

    Код qbasic:
    [Ссылки могут видеть только зарегистрированные пользователи. ] I [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], Sec [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], Min [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], Hour [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    DO
        I = [Ссылки могут видеть только зарегистрированные пользователи. ]
        Sec = I [Ссылки могут видеть только зарегистрированные пользователи. ] 60: Min = I \ 60 [Ссылки могут видеть только зарегистрированные пользователи. ] 60: Hour = I \ 360 [Ссылки могут видеть только зарегистрированные пользователи. ] 24
        [Ссылки могут видеть только зарегистрированные пользователи. ] 1, 1
        [Ссылки могут видеть только зарегистрированные пользователи. ] Hour; "hour"; Min; "min"; Sec; "sec"
    LOOP
    Поправил вот так, теперь начинается с 10 часов 17 минут...
    Последний раз редактировалось neur0ner; 01.11.2012 в 21:59.
    Ответить с цитированием  
     

  7. #6  
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,531
    Сказал(а) спасибо
    126
    Поблагодарили 428 раз(а) в 291 сообщениях
    Записей в блоге
    6
    Код qbasic:
     
    FOR y = 0 TO 23 STEP 1
            FOR x = 0 TO 59 STEP 1
                    FOR i = 0 TO 59 STEP 1
                    LOCATE 10, 26: PRINT y; "час"; x; "мин"; i; "сек"
                    SLEEP 1
                    CLS
                    NEXT i
           NEXT x
    NEXT y
     
    END
    Вот хороший вариант.
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  8. Пользователь сказал cпасибо:

    neur0ner (01.11.2012)

  9. #7  
    Новичок
    Регистрация
    31.10.2012
    Сообщений
    4
    Сказал(а) спасибо
    3
    Поблагодарили 0 раз(а) в 0 сообщениях
    вот то что я искал, спасибо огромное!
    Ответить с цитированием  
     

  10. #8  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    А можно как нибудь по другому сделать?
    Ну, и последний вариант, таймер идет с нуля.
    Код qbasic:
    [Ссылки могут видеть только зарегистрированные пользователи. ] I [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], BT [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], Sec [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], Min [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ], Hour [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    BT = [Ссылки могут видеть только зарегистрированные пользователи. ]
    DO
        I = [Ссылки могут видеть только зарегистрированные пользователи. ] - BT
        Sec = I [Ссылки могут видеть только зарегистрированные пользователи. ] 60: Min = I \ 60 [Ссылки могут видеть только зарегистрированные пользователи. ] 60: Hour = I \ 60 \ 60 [Ссылки могут видеть только зарегистрированные пользователи. ] 24
        [Ссылки могут видеть только зарегистрированные пользователи. ] 1, 1
        [Ссылки могут видеть только зарегистрированные пользователи. ] Hour; "hour"; Min; "min"; Sec; "sec"
    LOOP
    Дружба-магия-радость!
    Ответить с цитированием  
     

  11. Пользователь сказал cпасибо:

    neur0ner (02.11.2012)

  12. #9  
    Новичок
    Регистрация
    31.10.2012
    Сообщений
    4
    Сказал(а) спасибо
    3
    Поблагодарили 0 раз(а) в 0 сообщениях
    За это тоже спасибо, оставлю два варианта
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. помогите пожалуйста
    от finer в разделе Turbo Pascal
    Ответов: 3
    Последнее сообщение: 14.06.2012, 16:10
  2. Ответов: 7
    Последнее сообщение: 25.11.2011, 01:40
  3. Помогите пожалуйста решить задачи на QBasic
    от Дмитрий 1993 в разделе QBasic
    Ответов: 9
    Последнее сообщение: 23.11.2011, 18:53
  4. Ответов: 2
    Последнее сообщение: 30.05.2011, 12:25
  5. Ответов: 2
    Последнее сообщение: 05.05.2011, 10:55
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •