2016-09-13 4 views
0

Я читаю «Принципы и практики программирования с использованием C Plus Plus», Bjarne Stroustrup, и я на стр. 66.Как я могу сделать эту работу «пока»?

Я пробую некоторые вещи самостоятельно, и я написал это на Visual Studio :

#include "../../std_lib_facilities.h"; 

int main() 
{ 
    string first_name = " "; 
    string last_name; 
    int numbert = 0; 
    while (cin >> last_name) { 
     ++numbert; 
     if (last_name > first_name) 
      cout << first_name << ": plays guitar!\n" << last_name << " : plays bass!\n"; 
     } 
} 

то, что я хочу, чтобы это сделать: когда я пишу "Lennon McCartney" в командной строке, чтобы вернуться:

Lennon: plays guitar! 
Mccartney: plays bass! 

Но то, что я получаю:

:plays guitar! 
Lennon: plays bass! 
:plays guitar! 
Mccartney: plays bass! 

И все мы знаем, что Маккартни играет на басу. Почему я получаю это? Как я могу это исправить, пожалуйста?

Спасибо.

+1

Добро пожаловать на переполнение стека! Похоже, вам, возможно, потребуется научиться использовать отладчик для выполнения вашего кода. С хорошим отладчиком вы можете выполнить свою программу по очереди и посмотреть, где она отклоняется от ожидаемого. Это важный инструмент, если вы собираетесь заниматься программированием. Дальнейшее чтение: ** [Как отлаживать небольшие программы] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** – NathanOliver

+8

[подсказка] Вы когда-нибудь меняете строку first_name = ""; '? – NathanOliver

+1

Возможно, вам не нужен цикл, всего два оператора ввода. –

ответ

1

Вы не получаете вход для first_name вы должны использовать ниже код

#include<iostream> 
    #include<string> 
    using namespace std; 

    int main() 
    { 
     string first_name = " "; 
     string last_name; 
     int numbert = 0; 
     while (cin >> first_name >>last_name) { 
      ++numbert; 
      if (last_name > first_name) 
       cout << first_name << ": plays guitar!\n" << last_name << " : plays bass!\n"; 
     } 
    } 
+0

Спасибо, мужик! Это соответствует тому, что я изучаю. –

+0

Пожалуйста, закройте этот вопрос –

Смежные вопросы