2016-06-21 2 views
-1

Я должен иметь возможность вводить заданное число имен, а затем отображать их в порядке их ввода, "Our contestants printed Forwards". После чего будет отображаться в обратном порядке, "Our contestants printed Backwards". Мне удалось получить часть "Forwards", но я не уверен, как получить часть "Backwards". Я прокомментировал скопированный код, потому что использовал его в качестве заполнителя.Как изменить порядок имен строк?

Чтобы быть справедливым, я должен использовать указатель, который я определил, string *pNames, чтобы сделать сохранение и печать. Но я совершенно не знаю, как это должно быть сделано.

Буду признателен за любую помощь, которую я могу получить от этого. Спасибо.

int main() 
{ 
    string *pNames; 

    string names[3]; 

    pNames = names; 

    for (int counter = 0; counter < 3; counter++) 
    { 
     cout << "Please enter contestant number " << counter + 1 << " > "; 
     getline(cin, pNames[counter]); 
    } 

    cout << "Our contestants printed Forwards" << endl; 
    for (int i = 0; i < 3; i++) 
     cout << pNames[i] << endl; 

    cout << endl; 

    cout << "Our contestants printed Backwards" << endl; 
    //for (int i = 0; i < 3; i++) 
     //cout << pNames[i] << endl; 

    return 0; 
} 
+1

'мне удалось получить«вперед», часть working' - но явно не имеет ни малейшего представления о том, как вы это сделали или еще ответ на обратную часть будет довольно очевидно ... – John3136

+0

@ John3136 так честен , но все же так верно. –

+0

Я планировал добавить «воспринимать это как намек не на критику», но мои пальцы шли быстрее, чем мой мозг, и я не мог потрудиться, редактируя его ;-) – John3136

ответ

0

Я думаю, это было бы просто. Просто сделайте это:

cout << "Out contestants printed Backwards" << endl; 
for (int i = 2; i >= 0; i--) 
    cout << pNames[i] << endl;  
+0

Ну, это определенно похоже на трюк, хотя в этой ситуации '2' будет установлен на' 3'. Но независимо, спасибо за помощь! –

+0

Нет, поскольку в массиве есть 3 элемента, могут быть только пункты 0, 1 и 2, так как они начинаются с 0. Это даст значения 2, 1 и 0, получая ВСЕ элементы массива – Darkrifts

+0

Но после скомпилировав его, он появился только во втором элементе, а не во всех трех. –

1

Есть ли причина, чтобы не использовать вектор и итераторы?

vector<string> names; 

/* Fill it some way */ 

/* Print forward-ordered */ 
for(auto i = names.cbegin(); i != names.cend(); ++i) 
    cout << *i << endl; 

/* Print reverse-ordered */ 
for(auto i = names.crbegin(); i != names.crend(); ++i) 
    cout << *i << endl; 
Смежные вопросы