【算法】十帧倒计时进度条打印

题目:

进度条打印倒计时时间, 输入分钟和秒钟, 打印倒计时进度条

要求:

进度条字符串长度为40个字符, 打印格式为: [%s][%.2lf] %dmin: %dsec

打印格式的四个数据分别是 进度条字符串 进度条百分比 剩余分钟 剩余秒钟

进度条字符串用'#'字符填充, 末尾是当前倒计时剩余时间

进度条的刷新频率是10帧(即进度条百分比的刷新帧数)

源码:

#include <iostream>
#include <cstdio>
#include <string>
#include <Windows.h>
using namespace std;

int main()
{
	int m, s;
	cin >> m >> s;

	if (m >= 60 || m < 0 || s < 0)
	{
		cout << "输入不合法" << endl;
		return 1;
	}

	while (s >= 60)
	{
		s -= 60;
		++m;
	}

	string bar;
	bar.reserve(40);	    // 进度条字符串长度为40个字符


	// 10帧:每秒钟刷新10次,
	int sec = m * 60 + s;
	float bit = 10.0 / sec;
	float per = 0.0;
	float s_per = 0.0;
	int cnt = 0;

	while (sec)
	{
		per += bit;
		s_per += bit;
		if (s_per > 2.5)
		{
			bar += "#";
			s_per -= 2.5;
		}
		++cnt;
		if (cnt % 10 == 0)
		{
			--sec;
		}
		cout << "bar: [" << bar << "] ";
		printf("[%.2f%] %2dmin:%02dsec\r", per, sec / 60, sec % 60);	//用回车符结尾
		fflush(stdout);
		Sleep(100);
	}

	return 0;
}

猜你喜欢

转载自blog.csdn.net/phoenixFlyzzz/article/details/130436787