новички на форумах тут и начинают изучать 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()
cout, как правило, буферизуется, и новая строка вызывает сброс буфера на экран. Когда вы отображаете числа в одной строке, это может объяснить, что все отображается в одном месте, несмотря на задержку, которую вы ввели.
использование cout.flush();
заставить вывод выполняться без задержки буферизации. Вы могли бы также использовать форма манипулятора: cout << number << " " << flush;