Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Цифровые часы  (Прочитано 11774 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ZaVyLoN
Интересующийся

by
Offline Offline

« : 20-04-2010 11:55 » 

Возникла проблема с  system("cls");
без  никаких задержек нету 
можно ли как-то по другому перерисовывать,

проблема закоменчена в коде!!!!


Код:
#include <iostream>
#include <windows.h>
#include <ctime>
#include <conio.h>
using namespace std;

struct MyTime
{
unsigned int hour;
unsigned int min;
unsigned int sec;
};

MyTime getTime()
{
MyTime t;
unsigned int x = time(0)%(24*3600);
t.hour = 1 + x / 3600 + 2;
x = x % 3600;
t.min = x / 60;
x = x %60;
t.sec = x;
return t;
}
void Show(MyTime t)
{
//cout<<t.hour<<":"<<t.min<<":"<<t.sec<<endl;

while(1)
{

t.sec = t.sec + 1;
Sleep(1000);
if(t.sec == 60)
{
t.sec = 0;
t.min += 1;
}
if(t.min == 60)
{
t.min = 1;
t.hour += 1;
}
if(t.hour == 24)
{
t.hour = 0;
t.min = 0;
}
system("cls"); //   -> из за перерисовки тереются секунды и со временем отстают часы,
cout<<t.hour<<":"<<t.min<<":"<<t.sec<<endl;

}

}
int main()
{
MyTime mt = getTime();
Show(mt);

return 0;
}
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 20-04-2010 11:59 » 

а что-нибудь типа gotoXY
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 20-04-2010 12:22 » 

Хорошо бы автору почитать про такую штуку, как теорема Котельникова (Найквиста-Шеннона)...
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 20-04-2010 12:36 » 

только что увидел... Под столом
t.sec = t.sec + 1;
sleep(1000)
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 20-04-2010 14:58 » 

только что увидел... Под столом
t.sec = t.sec + 1;
sleep(1000)

Вот и ошибка! Надо Sleep с заглавной буквы писать!
Записан

Anchorite
Гость
« Ответ #5 : 20-04-2010 15:34 » 

Код:
#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

int main(int argc, char* argv[])
{
    time_t rawtime;
    tm* timeinfo;
    char buffer[32];

    system("cls");

    while(1)
    {
        rawtime = time(0);
        timeinfo = localtime(&rawtime);
        strftime(buffer, sizeof(buffer), "%H:%M:%S\r", timeinfo);
        cout << buffer;
    }

    return 0;
}
Записан
ZaVyLoN
Интересующийся

by
Offline Offline

« Ответ #6 : 20-04-2010 17:19 » 

Там нписано Sleep(1000)

Anchorite, спс

у меня еще вопорс!!!
как заменить цифры например на:
***
*  *
***
*  *
*** и остальные такого же типа!
« Последнее редактирование: 20-04-2010 17:56 от ZaVyLoN » Записан
Anchorite
Гость
« Ответ #7 : 21-04-2010 07:39 » 

Код:
#include <windows.h>
#include <iostream>
#include <ctime>

using namespace std;

void cls()
{
    COORD coordScreen = { 0, 0 };
    DWORD cCharsWritten;
    CONSOLE_SCREEN_BUFFER_INFO csbi;
    DWORD dwConSize;
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

    if (!GetConsoleScreenBufferInfo(hConsole, &csbi))
        return;

    dwConSize = csbi.dwSize.X * csbi.dwSize.Y;

    if (!FillConsoleOutputCharacter(hConsole, (TCHAR)' ', dwConSize, coordScreen, &cCharsWritten ))
        return;

    if (!GetConsoleScreenBufferInfo( hConsole, &csbi ))
        return;

    if (!FillConsoleOutputAttribute( hConsole, csbi.wAttributes, dwConSize, coordScreen, &cCharsWritten ))
        return;

    SetConsoleCursorPosition( hConsole, coordScreen );
}

void resetCursorPosition()
{
   COORD coordScreen = { 0, 0 };
   HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

   SetConsoleCursorPosition( hConsole, coordScreen );
}

const int c_fontHeight  = 5;
const int c_charCounr  = 11;

const char* font[c_charCounr][c_fontHeight] =
{
    {
        "*** ",
        "* * ",
        "* * ",
        "* * ",
        "*** ",
    },
    {
        "**  ",
        " *  ",
        " *  ",
        " *  ",
        "*** ",
    },
    {
        "*** ",
        "  * ",
        "*** ",
        "*   ",
        "*** ",
    },
    {
        "*** ",
        "  * ",
        "*** ",
        "  * ",
        "*** ",
    },
    {
        "* * ",
        "* * ",
        "*** ",
        "  * ",
        "  * ",
    },
    {
        "*** ",
        "*   ",
        "*** ",
        "  * ",
        "*** ",
    },
    {
        "*** ",
        "*   ",
        "*** ",
        "* * ",
        "*** ",
    },
    {
        "*** ",
        "  * ",
        "  * ",
        "  * ",
        "  * ",
    },
    {
        "*** ",
        "* * ",
        "*** ",
        "* * ",
        "*** ",
    },
    {
        "*** ",
        "* * ",
        "*** ",
        "  * ",
        "*** ",
    },
    {
        "  ",
        "* ",
        "  ",
        "* ",
        "  ",
    },
};


void drawLine(int line, const char* buffer)
{
    for(int i = 0; buffer[i]; i++)
    {
        int index = buffer[i] - '0';
        cout << font[index][line];
    }

    cout << endl;
}

int main(int argc, char* argv[])
{
    time_t rawtime;
    tm* timeinfo;
    char buffer[32];

    cls();

    while(1)
    {
        rawtime = time(0);
        timeinfo = localtime(&rawtime);
        strftime(buffer, sizeof(buffer), "%H:%M:%S", timeinfo);

        for(int line = 0; line < c_fontHeight; line++)
        {
            drawLine(line, buffer);
        }

        resetCursorPosition();
    }

    return 0;
}

Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines