Добавление временной задержки для имитации розыгрыша лотерейных номеров

новички на форумах тут и начинают изучать C ++. Этот сайт уже очень помог мне с синтаксисом и другими вещами. То, что я пытаюсь сделать с моим кодом, — это вывод числа на экран, задержка времени, а затем вывод следующего номера. В настоящее время задержка работает, но она печатает все 13 сгенерированных чисел. Есть идеи, что я делаю не так?

Вот мой код:

#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <windows.h>
using namespace std;

int main( )
{

// Function prototypes
int random ( int minValue, int maxValue);

// Constant declarations
const int maxValue = 9;
const int minValue = 0;

// Local variable declarations
int seed;
int numberOfPeople;
int peopleCount = 0;
int numberCount;
int number;

// Initialize the random number generator
cout << "Welcome to the Lottery!" << endl;
cout << "Enter your lucky number to start: " << endl;
cin >> seed;
srand (seed);

// Generate and display numbers
cout << "Enter the number of people participating in the lottery:" << endl;
cin >> numberOfPeople;

cout << "Your lucky lottery numbers for the day are:" << endl;
cout.setf (ios::left, ios::adjustfield);
cout << setw(8) << "Pick 3" << setw(10) << "Pick 4" <<
setw(15) << "Pick 6" << endl;

while (peopleCount < numberOfPeople) {
numberCount = 0;
while (numberCount < 13){
number =  random (minValue, maxValue);
Sleep (500); // pauses for half a second
cout << number << " ";

if (numberCount == 2){
cout << "  "; }
else if (numberCount == 6){
cout << "  ";       }
else if (numberCount == 12){
cout << endl;          } //end if, else if

numberCount++;
} //end nested while
peopleCount++;
} // end while

return 0;
} // end main()

/**
*  Produces a pseudo-random number
*  @param minValue    minimum value that can be generated
*  @param maxValue    maximum value that can be generated
*
*  @return         psuedo-random number in the specified range
*/

int random ( int minValue, // min possible number to be generated
int maxValue)  // max possible number to be generated
{
return ( (rand() % maxValue) + minValue);
} // end random()

1

Решение

cout, как правило, буферизуется, и новая строка вызывает сброс буфера на экран. Когда вы отображаете числа в одной строке, это может объяснить, что все отображается в одном месте, несмотря на задержку, которую вы ввели.

использование cout.flush(); заставить вывод выполняться без задержки буферизации. Вы могли бы также использовать форма манипулятора: cout << number << " " << flush;

0

Другие решения


По вопросам рекламы [email protected]