Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2011, 20:07   #1
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию Имитатор Загрузки

Здравствуйте люди.
Хочу написать имитатор загрузки.Но насколько я понимаю функциа Sleep использует строку,во время действия.

#include <windows.h>
#include <iostream.h>
#include <conio.h>


void waitprint(int Number,int timeout)
{

while(Number > 0)
{
cout<<".";
Sleep(timeout);
cout<<endl;
Number--;
}

}

int main()
{
cout<<"Loading"<<endl;;
waitprint(10,100);
cout<<"\a";
return 0;
}
Помогите исправить ошибку.
Заранее благодарен.
Акоб вне форума Ответить с цитированием
Старый 15.03.2011, 20:24   #2
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Цитата:
Но насколько я понимаю функциа Sleep использует строку,во время действия.
Части предложения до запятой и после запятой как-то не связаны между собой ни по смыслу, ни интонацией...
Не понял, в чем проблема.
У меня все даже работает (после небольших синтаксических корректиовок).
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."

Последний раз редактировалось Syuf; 15.03.2011 в 20:26.
Syuf вне форума Ответить с цитированием
Старый 15.03.2011, 22:34   #3
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Можно показать исправленный код?
Почему не видно как добавляются точки?
Акоб вне форума Ответить с цитированием
Старый 16.03.2011, 11:34   #4
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Кстати, как реализовать нечто подобное под Линуксом?
Программа работает не так, как задумывалось -- точки выводятся не последовательно с интервалом (timeout), а все сразу после того, как окончатся все итерации цикла с соответствующей многократной задержкой.
При этом такая беда происходит толька при попытке вывести точки в одной строке (как, собственно, и должен выглядеть имитатор загрузки); если после каждой точки вставлять endl -- все происходит нормально, но точки, естественно, выводятся в колонку...

Код:
#include <iostream>
#include <cstdio>

using namespace std;

void waitprint(int Number,int timeout);

int main()
{
    cout << "Loading" << endl;
    waitprint(10,1);
    return 0;
}

void waitprint(int Number, int timeout)
{
    while(Number > 0)
    {
        cout << ".";
        sleep(timeout);
        //cout << endl;   //если тут сделать перевод строки, timeout работает нормально
        Number--;
    }
}
Видимо, виндовская Sleep и линуксовая sleep работают по-разному?
Или тут, все-таки, дело в иной организации ввода/вывода?

ЗЫ printf() тоже не работает
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062

Последний раз редактировалось Mandrivnyk; 16.03.2011 в 11:37.
Mandrivnyk вне форума Ответить с цитированием
Старый 16.03.2011, 11:39   #5
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
Кстати, как реализовать нечто подобное под Линуксом?
Программа работает не так, как задумывалось -- точки выводятся не последовательно с интервалом (timeout), а все сразу после того, как окончатся все итерации цикла с соответствующей многократной задержкой.
При этом такая беда происходит толька при попытке вывести точки в одной строке (как, собственно, и должен выглядеть имитатор загрузки); если после каждой точки вставлять endl -- все происходит нормально...

Код:
Видимо, виндовская Sleep и линуксовая sleep работают по-разному?
Или тут, все-таки, дело в иной организации ввода/вывода?

ЗЫ printf() тоже не работает
Не в sleep дело, а в endl. Этот манипулятор, помимо перевода строки, также производит сброс информации из буфера на консоль. Добавьте вызов flush после вывода и всё будет как надо
Код:
cout << "." << flush;
netrino вне форума Ответить с цитированием
Старый 16.03.2011, 11:46   #6
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
Не в sleep дело, а в endl. Этот манипулятор, помимо перевода строки, также производит сброс информации из буфера на консоль. Добавьте вызов flush после вывода и всё будет как надо
Код:
cout << "." << flush;
Семен Семеныч!.. (с)

Спасибо, с утра, видимо, у меня мозг не включился -)
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 17.03.2011, 02:34   #7
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Спасибо большое.
Акоб вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
зебра до загрузки ОС KREGI Компьютерное железо 4 14.03.2011 20:17
Имитатор планировщика процессов Delphi marat2201 Помощь студентам 0 14.06.2010 23:43
Файлы загрузки Яр|/||< (^_^) Операционные системы общие вопросы 6 03.07.2009 09:55
Имитатор нажатие клавиши на клавиатуре SNUPY Общие вопросы Delphi 3 10.11.2008 21:39