Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
1

Замена printf на cout

28.06.2013, 20:21. Просмотров 1475. Ответов 12
Метки нет (Все метки)

Ув. коллеги,
Можно ли заменить 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2013, 20:21
Ответы с готовыми решениями:

Замена printf на cout
Доброго времени суток. Просьба помочь заменить printf на cout в этой строке: ...

Замена (printf на cout)
Как заменить здесь использование printf на cout (программа с битовыми полями) ...

Замена printf на cout и scanf на cin
Пожалуйста, помогите заменить printf на cout и scanf на cin #define...

замена scanf и printf на cin и cout в коде
#include &quot;stdio.h&quot; #include &quot;math.h&quot; int main() { float x = -2.0, A = 0,...

Замена функций c cout на printf() и cin на scanf()
Место названия месяцев выводит не понятные символы и далее ошибку.В чём тут...

12
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
28.06.2013, 20:28 2
Тернарная операция работает с одинаковыми типами, а printf возвращает int. Здесь на помощь может прийти оператор "запятая":
C++
1
number ? f1(number) + f2() : 0, cout <<("Entered zero.\n");
0
Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
28.06.2013, 20:33  [ТС] 3
@BumerangSP, и, к сожалению, на экран будут выводится все выражения тернарного оператора, если введеное число > 0. К примеру:
14 entered. Entered zero.
0
BumerangSP
4287 / 1409 / 463
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
28.06.2013, 20:44 4

Не по теме:

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


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

Можно еще по выдумывать
C++
1
cout << (number ? (f1(number) + f2() ? "" : "") : "Entered zero.\n");
1
Hrobak
291 / 171 / 46
Регистрация: 22.03.2010
Сообщений: 487
Завершенные тесты: 1
28.06.2013, 21:05 5
Пришло в голову:
C++
1
number ? f1(number) + f2() : (cout <<("Entered zero.\n"),0);
. Ну или так
C++
1
cout << (number ? f1(number) + f2(),"" : "Entered zero");
2
Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
28.06.2013, 21:07  [ТС] 6
@BumerangSP, Да уже перекинул ф-ции в отдельный файл. Я всего лишь хотел сократить код.
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.06.2013, 21:08 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;
}
И функции на месте...
0
Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
28.06.2013, 21:16  [ТС] 8
Цитата Сообщение от Hrobak Посмотреть сообщение
Пришло в голову:
C++
1
number ? f1(number) + f2() : (cout <<("Entered zero.\n"),0);
. Ну или так
C++
1
cout << (number ? f1(number) + f2(),"" : "Entered zero");
Спасибо, я как-то забыл про скобки)

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

Не по теме:

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

0
rangerx
1944 / 1553 / 478
Регистрация: 31.05.2009
Сообщений: 2,913
28.06.2013, 23:05 12
@Nklok,
1) Использовать тернарный оператор подобным образом не есть хорошо.
2) В данном случае, достаточно привести одно из выражений к bool и всё будет работать.
0
alsav22
28.06.2013, 23:10     Замена printf на cout
  #13

Не по теме:

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

0
28.06.2013, 23:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.06.2013, 23:10
Привет! Вот еще темы с ответами:

С++ замена компонентов cout, cin, while(in >> s1 >> s2), на printf scanf while()
замена компонентов cout, cin, while(in &gt;&gt; s1 &gt;&gt; s2), на printf scanf while()...

Замена функций c cout на printf() как это работает?
Здрасвуйте помогите пожалуйсто вообще не догнал как работает вот эта функиция...

Printf() - Cout
Простой вопрос. Как заменить printf (&quot;%09d&quot;, a); на cout?


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru