Je voudrais faire un indicateur de progression très basique en imprimant un caractère 'X' à cout chaque fois qu'une boucle progresse encore 10 % J'essaye de faire ceci comme montré dans le code collé ci-dessous, mais il ne semble pas fonctionner - quand vraiment il semble qu'il devrait.La conception d'une barre de progression simple à cout passe de 0-> 100% instantanément à la fin en C++
Il est censé afficher une progression régulière tout au long de la boucle, mais à la place, je reçois tous les X à la fois une fois la boucle terminée. Ce n'est pas parce que les boucles sont complétées trop rapidement pour que je puisse les percevoir. Pour vérifier cela, vous pouvez ajouter un «F» supplémentaire à «TOTAL» pour augmenter considérablement la durée de la boucle, et vous verrez que ce n'est pas seulement une question de perception.
Des idées sur ce qui pourrait en être la cause?
#include <iostream>
#define TOTAL 0xFFFFFFF
using namespace std;
int main(void) {
//Make a counter for counting loops
double counter = 0;
// Set it to trigger after each 10% of progress
double counterMax = TOTAL/10;
cout << "Starting now..." << endl;
for (double i = 0; i < TOTAL; i++) {
// Do something... anything
i++;
i--;
// Increment the counter
counter++;
// Print an X when the counter exceeds the 10%
// trigger point, and then reset the counter.
if (counter > counterMax) {
cout << 'X';
counter = 0;
}
}
cout << endl << "Done!";
return 0;
}
vous devez ajouter 'cout.flush();' 'après Cout << « X » ". –
Alternativement, 'cout << 'X' << flush;' – AJNeufeld
A fonctionné parfaitement. Merci à tous les deux! – Eddie