Форум программистов, компьютерный форум CyberForum.ru

Замена printf на cout - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Nklok
 Аватар для Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
28.06.2013, 20:21     Замена printf на cout #1
Ув. коллеги,
Можно ли заменить printf на cout в последнем выражении тернарного оператора (строка 13) без создания новой функции?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
using namespace std;
 
int f1(int n);
int f2();
 
int main()
{
    int number;
 
    cout<<"Enter number: "; cin>>number;
    
    number ? f1(number) + f2() : printf("Entered zero.\n");
    
 system("pause");
 return 0;
}
 
int f1(int n)
{
    cout<<n;
    return 0;
}
 
int f2()
{
    cout<<" entered.";
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
28.06.2013, 20:28     Замена printf на cout #2
Тернарная операция работает с одинаковыми типами, а printf возвращает int. Здесь на помощь может прийти оператор "запятая":
C++
1
number ? f1(number) + f2() : 0, cout <<("Entered zero.\n");
Nklok
 Аватар для Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
28.06.2013, 20:33  [ТС]     Замена printf на cout #3
@BumerangSP, и, к сожалению, на экран будут выводится все выражения тернарного оператора, если введеное число > 0. К примеру:
14 entered. Entered zero.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
28.06.2013, 20:44     Замена printf на cout #4

Не по теме:

Это да, мда, надо мне проверять перед постингом)


Можно попробовать унаследовать от стандартного потока, добавив возвращаемое значение int) Ну это так, мысли в слух.
А чем создание функции не подходит? Если это вопрос эффективности, то сделайте такую функцию подставляемой.

Можно еще по выдумывать
C++
1
cout << (number ? (f1(number) + f2() ? "" : "") : "Entered zero.\n");
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
28.06.2013, 21:05     Замена printf на cout #5
Пришло в голову:
C++
1
number ? f1(number) + f2() : (cout <<("Entered zero.\n"),0);
. Ну или так
C++
1
cout << (number ? f1(number) + f2(),"" : "Entered zero");
Nklok
 Аватар для Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
28.06.2013, 21:07  [ТС]     Замена printf на cout #6
@BumerangSP, Да уже перекинул ф-ции в отдельный файл. Я всего лишь хотел сократить код.
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.06.2013, 21:08     Замена printf на cout #7
Без тернарного никак? Чем плохо?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
using namespace std;
 
int f1(int n);
int f2();
 
int main()
{
    int number;
 
    cout<<"Enter number: "; cin>>number;
    
    if (!number) cout << "Entered zero.\n";
    else
    {
        f1(number);
        f2();
    }
    
    
    system("pause");
    return 0;
}
 
int f1(int n)
{
    cout<<n;
    return 0;
}
 
int f2()
{
    cout<<" entered.";
    return 0;
}
И функции на месте...
Nklok
 Аватар для Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
28.06.2013, 21:16  [ТС]     Замена printf на cout #8
Цитата Сообщение от Hrobak Посмотреть сообщение
Пришло в голову:
C++
1
number ? f1(number) + f2() : (cout <<("Entered zero.\n"),0);
. Ну или так
C++
1
cout << (number ? f1(number) + f2(),"" : "Entered zero");
Спасибо, я как-то забыл про скобки)

Добавлено через 4 минуты
@alsav22, я не ищу легких и громоздких путей
alsav22
5284 / 4803 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.06.2013, 21:19     Замена printf на cout #9
Цитата Сообщение от Nklok Посмотреть сообщение
я не ищу легких и громоздких путей
Ну да, две ненужные функции это, конечно, не громоздко...
Nklok
 Аватар для Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
28.06.2013, 21:20  [ТС]     Замена printf на cout #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Ну да, две ненужные функции это, конечно, не громоздко...
Эти ф-ции шли по умолчанию
alsav22
28.06.2013, 21:27
  #11

Не по теме:

Цитата Сообщение от Nklok Посмотреть сообщение
я не ищу легких и громоздких путей
Интересно было бы узнать: к чему, собственно, путь (цель)? Вывести сообщения о введённом числе? Наверное, тут какой-то особый путь, раз такой нелёгкий и громоздкий код...

rangerx
1918 / 1527 / 139
Регистрация: 31.05.2009
Сообщений: 2,891
28.06.2013, 23:05     Замена printf на cout #12
@Nklok,
1) Использовать тернарный оператор подобным образом не есть хорошо.
2) В данном случае, достаточно привести одно из выражений к bool и всё будет работать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2013, 23:10     Замена printf на cout
Еще ссылки по теме:

Отличия printf от cout C++
Переделать cout на printf C++
C++ Замена printf на cout
Заменить cout на printf C++
замена scanf и printf на cin и cout в коде C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
28.06.2013, 23:10     Замена printf на cout
  #13

Не по теме:

Цитата Сообщение от rangerx Посмотреть сообщение
@Nklok,
1) Использовать тернарный оператор подобным образом не есть хорошо.
2) В данном случае, достаточно привести одно из выражений к bool и всё будет работать.
Там особый путь...

Yandex
Объявления
28.06.2013, 23:10     Замена printf на cout
Ответ Создать тему
Опции темы

Текущее время: 01:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru