Может кому то пригодится тк мало кто юзает прогресс бары в основном делают по строкам #include <iostream> #include <windows.h> void printProgressBar(const char* prefix, char fill = '.', char highlight = '#', int barSize = 30, float progress = 0.0f) { int filledLength = static_cast<int>(barSize * progress + 0.5f); std::cout << "\r" << prefix << " ["; for (int i = 0; i < barSize; ++i) { if (i < filledLength) std::cout << highlight; else std::cout << fill; } std::cout << "] " << int(progress * 100 + 0.5f) << "%" << std::flush; } void animateProgressBar(const char* prefix, float endProgress, int barSize = 30, char fill = '.', char highlight = '#') { const int steps = barSize * 5; for (int i = 0; i <= steps; ++i) { float progress = endProgress * i / steps; printProgressBar(prefix, fill, highlight, barSize, progress); Sleep(20); } printProgressBar(prefix, fill, highlight, barSize, endProgress); std::cout << std::endl; } int main() { animateProgressBar("[+] Loading:", 1.0f, 25, '.', '#'); std::cout << "[+] Done\n"; system("pause"); } C #include <iostream> #include <windows.h> void printProgressBar(const char* prefix, char fill = '.', char highlight = '#', int barSize = 30, float progress = 0.0f) { int filledLength = static_cast<int>(barSize * progress + 0.5f); std::cout << "\r" << prefix << " ["; for (int i = 0; i < barSize; ++i) { if (i < filledLength) std::cout << highlight; else std::cout << fill; } std::cout << "] " << int(progress * 100 + 0.5f) << "%" << std::flush; } void animateProgressBar(const char* prefix, float endProgress, int barSize = 30, char fill = '.', char highlight = '#') { const int steps = barSize * 5; for (int i = 0; i <= steps; ++i) { float progress = endProgress * i / steps; printProgressBar(prefix, fill, highlight, barSize, progress); Sleep(20); } printProgressBar(prefix, fill, highlight, barSize, endProgress); std::cout << std::endl; } int main() { animateProgressBar("[+] Loading:", 1.0f, 25, '.', '#'); std::cout << "[+] Done\n"; system("pause"); }