2017-01-17 14 views
2

Как отображать 3 имени за раз, делая паузу, чтобы позволить пользователю нажать клавишу до того, как список продолжит отображаться.Как распечатать массив, приостановить его и продолжить печатать массив в C++?

Мой код теперь только петлями первые 3 значения массива

#include <iostream> 
#include <string> 
#include <iomanip> 

using std::setw; 
using namespace std; 

int main() { 

    string a; 
    string names[10]; //size of array 

    for (int i = 0; i < 10; i++) 
    { 
     std::cout << "Enter name "; 
     std::cin >> a; //user input 

     names[i] = a; //assigns input to array 
    } 
    cout << "\n"; 

    for (int k = 0; k < 10; k++) 
    { 
     for (int j = 0; j < 3; j++) 
     { 
      cout << names[j] << endl; 
     } 

     system("pause"); 
    } 

} 
+0

Вы можете использовать 'сон()'. Я бы, вероятно, использовал другую переменную и ++ после печати, и когда она попадает в три раза и 'if' и' sleep() ' –

+1

' используя std :: setw', * then * вы сдались и просто сбросили все из 'std' в глобальном пространстве имен? Точка для попытки, я думаю ... – Quentin

ответ

3

Я изменил ответ, основанный на ваш комментарий. Вместо сна мы просто останавливаемся и ждем, пока пользователь ничего не вводит в клавиатуру. Также обратите внимание, что, поскольку вы используете пространство имен, вам не нужно включать std::, я решил использовать его, так как я был не уверен, что вам нужно.

#include <iostream> 
#include <string> 
#include <iomanip> 

using std::setw; 
using namespace std; 

int main() { 

    string a; 
    int pauseCheck = 0; //new var 
    string names[10]; //size of array 

    for (int i = 0; i < 10; i++) { 
     std::cout << "Enter name "; 
     std::cin >> a; //user input 

     names[i] = a; //assigns input to array 
    } 
    cout << "\n"; 

    for (int k = 0; k < 10; k++) { 

     cout << names[k] << endl; 
     pauseCheck++; //increments check 

     if (pauseCheck == 3) { //if equals 3 
      system("pause"); //we pause till user input 
      pauseCheck = 0; //reset pause check 
     } 
    } 
    system("pause"); //last and final pause before program ends 
} 
+0

Привет, THX за помощь! Однако есть ли другая функция, кроме sleepCheck? Я должен отображать имена 3 за раз, делая паузу, чтобы позволить пользователю нажать клавишу, прежде чем список продолжит отображаться. – hahas018

+0

@ hahas018 см. Пересмотренный ответ. Просто вместо того, чтобы спать в течение x времени, мы можем сделать паузу, используя тот же код. –

+0

Ницца! Большое спасибо! – hahas018

-1

Вы можете ждать Enter-Press с другим std::cin, просто написать в значение мусора.

Я думаю, что другие способы не являются независимыми от платформы. Вы могли бы использовать Windows api или unix для получения нажатия клавиши.

+0

Вы можете подождать, пока пользователь вводит что-либо в клавиатуру, используя 'system (" pause ");', точно так же, как пользователь имел в конце своего вопроса. Это используется вместо использования 'cin', который ничего не делает. –

+0

, поэтому команда паузы доступна для каждой системы? –

+0

нет вы не можете. У linux нет такой команды. его и только окна. в этом случае std :: cin будет работать независимо от платформы, вот что я имел в виду с моим ответом –

0

Вот еще один способ сделать это, я думаю, это немного более прямо вперед:

#include <iostream> 
#include <string> 
#include <iomanip> 

using std::setw; 
using namespace std; 

int main() { 

    string a; 
    string names[10]; //size of array 

    for (int i = 0; i < 10; i++) 
    { 
     std::cout << "Enter name "; 
     std::cin >> a; //user input 

     names[i] = a; //assigns input to array 
    } 
    cout << "\n"; 

    for (int k = 0; k < 10; k++) 
    { 
     cout << names[k] << endl; 

     if((k + 1) % 3 == 0) // everytime k + 1 is divisible by 3, let user hit a key 
      system("pause"); 
    } 
}