2015-04-19 2 views
1

приведенный ниже код C++, который работает просто отлично, учитель попросил нас переписать его, чтобы иметь ввод и вывод только в одной инструкции.как переписать этот простой код C++?

Я действительно не знаю, как это сделать, и я провел исследования в течение нескольких часов.

Я по-настоящему ценю намек на то, как это сделать.

#include <iostream> 
using namespace std; 

int main() 
{ 
    int c; 
    cin >> c; 

    std; 

    if(c == 0) { 
     cout << "user sent 0" << endl; 
    } 
    else { 
     cout << "user sent a number different from 0" << endl; 
    } 

    return 0; 
} 

спасибо за чтение.

+0

инструкцией вы имеете в виду отдельную функцию? – LogicStuff

+0

это именно то, что мне было интересно, вот вся информация, которую учитель дал нам. –

+0

Это значит быть плохо отформатированным? Может быть, это часть вопроса? –

ответ

5

Если ваш учитель рассматривает если-нибудь заявление как одной команды, я могу предложить это один:

#include <iostream > 
using namespace std; 

int main() { 
    int c; 
    if ((cin >> c) && c==0) 
     cout << ”user sent 0” << endl ; 
    else cout << ”user sent a number different from 0” << endl ; 
    return 0; 
} 

Если он видит это более строго, то вы можете попробовать:

int c; 
    cout << ((cin >> c) && c==0 ? "user sent 0" : "user sent a number different from 0" ) << endl; 
    return 0; 

Концептуально , Я люблю последний. Но когда я прочитал его снова, это напоминает мне знаменитую цитату Б.Кернигана: «Отладка в два раза сложнее, чем запись кода в первую очередь. Поэтому, если вы пишете код как можно умно, вы, по определению, . не достаточно умны, чтобы отладить "

+0

pd: Мне очень понравилась цитата, спасибо вам большое. –

1

Это самый маленький я могу сделать:

std::cout << (std::cin.get() == '0' ? "user sent 0" : "user sent a number different from 0"); 
Смежные вопросы