Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прогресс бар в консоле 
:(
    Опции темы
Веталька
Дата 5.3.2010, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 2.11.2008

Репутация: нет
Всего: 6



Цитата

Веталька, а причем тут прогрессбар? В твоем случае придется использовать нестандартные механизмы.


Цитата

Цитата

Второй вариант - выводить в одной и той же знаковой позиции по очереди символы "/", "-", "|", "\" а после них число процентов от принятого файла. Получается
 эффект вращающейся палочки, символизирующей что процесс идёт и программа не зависла.


Цитата

что именно? все просто, как пять копеек.



--------------------
Ради зачета студент идет на все, даже на лекции........................ 
PM MAIL ICQ   Вверх
andrew_121
Дата 5.3.2010, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 10
Всего: 33



Цитата(Веталька @  5.3.2010,  15:46 Найти цитируемый пост)
как выводить символ в одно и то же место?

ты притворяешься? smile очень надеюсь что да.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
bsa
Дата 5.3.2010, 16:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Веталька, а в чем собственно проблема? Не знаешь как создать массив из 4-х символов?
Код
static const char rotSym[] = { '-', '\\', '|', '/' };
Не знаешь как вывести что-то в строку?
Код
int counter = 0;
float percent;
//...
char data[20];
sprintf(data, "%c %.2f%%", rotSym[counter++ % 4], percent);

Не знаешь, как узнать размер строки?
Код
size_t size = strlen(data);

Не знаешь, как вывести строку?
Код
printf("%s", data);

Не знаешь, как вывести символы возврата курсора в нужном количестве?
Код
while(size--)
   fputc('\b', stdout);

Не знаешь как сбросить буфер консоли?
Код
fflush(stdout);


Это сообщение отредактировал(а) bsa - 5.3.2010, 17:00
PM   Вверх
Веталька
Дата 5.3.2010, 17:29 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 2.11.2008

Репутация: нет
Всего: 6



Цитата

ты притворяешься?  очень надеюсь что да.


да, как не печально но я не притворяюсь   smile 

Это сообщение отредактировал(а) Веталька - 5.3.2010, 21:04


--------------------
Ради зачета студент идет на все, даже на лекции........................ 
PM MAIL ICQ   Вверх
jhonyxakep
Дата 6.3.2010, 04:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

Репутация: 1
Всего: 8



Цитата(Веталька @  5.3.2010,  17:29 Найти цитируемый пост)
да, как не печально но я не притворяюсь    

Да, уж, очень печально....
Код

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    char *data = "Hello World!";
    char rotSym[4] = { '-', '\\', '|', '/' };
    
    
    
    int size = strlen(data)+1;
    int i=0;
    
    cout <<" " << data;
    
    while(size--) cout <<"\b";
    
    while (1)
    {
    i++;
    cout << rotSym[i]<<"\b";
    
    if (i == 3) i = 0;
    }
    
    system("PAUSE");
    return EXIT_SUCCESS;
}



Вот так бы написал школьник (тк плохо алгоритм расчитан...) smile 
PM MAIL ICQ   Вверх
bsa
Дата 6.3.2010, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



jhonyxakep, действительно. Так бы написал школьник, у которого каша в голове из C и C++. Если пишешь на С++, то вместо snprintf следует использовать stringstream. Гораздо удобней, тем более, что заслать нужно количество '\b' можно так:
Код
std::ostringstream stream;
stream << rotSym[counter++ % 4] << ' ' << std::setprecision(2) << percent << '%';
stream << std::setw(stream.str().size()) << std::setfill('\b') << "";
std::cout << stream.str() << std::flush;


Это сообщение отредактировал(а) bsa - 6.3.2010, 10:41
PM   Вверх
jhonyxakep
Дата 7.3.2010, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Divide Et Impera
**


Профиль
Группа: Участник
Сообщений: 983
Регистрация: 7.4.2009
Где: Что, Когда?

Репутация: 1
Всего: 8



Цитата(bsa @  6.3.2010,  10:40 Найти цитируемый пост)
Так бы написал школьник, у которого каша в голове из C и C++. 

 smile это я к тому что задача не особо сложная... даже вовсе не сложная
PM MAIL ICQ   Вверх
xvr
Дата 7.3.2010, 16:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(Веталька @ 5.3.2010,  15:46)
читая тему увидел /b но вот вопрос а если у меня уже напечатано 10 строк?

Никак. Все progress bar'ы (с использованием ТОЛЬКО стандартного вывода) будут работать в пределах одной строки, т.к. нет стандартного символа для перехода на ПРЕДЫДУЩУЮ строку (только на следующую)

PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0524 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.