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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
#1

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

28.06.2013, 20:21. Просмотров 1252. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2013, 20:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Замена printf на cout (C++):

Замена printf на cout - C++
Доброго времени суток. Просьба помочь заменить printf на cout в этой строке: printf(&quot;c1=%.2f+%.2f c2=%.2f-%.2f&quot;,re,im,re,im); (чтобы...

Замена (printf на cout) - C++
Как заменить здесь использование printf на cout (программа с битовыми полями) void printbin(int x) { int i = 16; ...

Замена printf на cout и scanf на cin - C++
Пожалуйста, помогите заменить printf на cout и scanf на cin #define _CRT_SECURE_NO_WARNINGS #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;...

Замена функций c cout на printf() и cin на scanf() - C++
Место названия месяцев выводит не понятные символы и далее ошибку.В чём тут может быть дело? #include &lt;iostream&gt; #include &lt;string&gt; ...

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

С++ замена компонентов cout, cin, while(in >> s1 >> s2), на printf scanf while() - C++
замена компонентов cout, cin, while(in &gt;&gt; s1 &gt;&gt; s2), на printf scanf while() #include &quot;stdafx.h&quot; #include &lt;map&gt; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BumerangSP
4286 / 1408 / 121
Регистрация: 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");
Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
28.06.2013, 20:33  [ТС] #3
@BumerangSP, и, к сожалению, на экран будут выводится все выражения тернарного оператора, если введеное число > 0. К примеру:
14 entered. Entered zero.
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
28.06.2013, 20:44 #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 #5
Пришло в голову:
C++
1
number ? f1(number) + f2() : (cout <<("Entered zero.\n"),0);
. Ну или так
C++
1
cout << (number ? f1(number) + f2(),"" : "Entered zero");
Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
28.06.2013, 21:07  [ТС] #6
@BumerangSP, Да уже перекинул ф-ции в отдельный файл. Я всего лишь хотел сократить код.
alsav22
5417 / 4813 / 442
Регистрация: 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;
}
И функции на месте...
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, я не ищу легких и громоздких путей
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.06.2013, 21:19 #9
Цитата Сообщение от Nklok Посмотреть сообщение
я не ищу легких и громоздких путей
Ну да, две ненужные функции это, конечно, не громоздко...
Nklok
0 / 0 / 0
Регистрация: 23.06.2013
Сообщений: 22
28.06.2013, 21:20  [ТС] #10
Цитата Сообщение от alsav22 Посмотреть сообщение
Ну да, две ненужные функции это, конечно, не громоздко...
Эти ф-ции шли по умолчанию
alsav22
28.06.2013, 21:27
  #11

Не по теме:

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

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

Не по теме:

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

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

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

Cout и printf - C++
Привет форумчане, не могу разобраться как правильно записать выражение использую не printf, a cout. Вот исходное выражение: printf(&quot;H:...

cout vs printf - C++
Что лучше и удобней использывать в написаннии программ? cout или printf?

printf и cout - C++
У меня возник вопрос, что луче еспользовать в C++, printf/scanf или cout/cin ? Что работает быстрее? Есть такой фрагмент кода ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.06.2013, 23:10
Ответ Создать тему
Опции темы

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