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

Тернарная операция - C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.69
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
14.01.2011, 02:18     Тернарная операция #1
Всем доброго времени суток. Вот написал прогу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int main(int argc, char** argv)
{
    string name;
    ofstream fout;
    if (argc > 1 && argv[1])
    {
        name = argv[1];
        fout.open(name.c_str(), ios::out | ios::app);
    }
    ostream& sout = name.empty() ? cout : fout;
    return 0;
}
Она показывает использование тернарной операции.
Но прога выдаёт ошибку на знаке вопроса в пердпоследней строке. Поправьте пожалуйста код.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2913 / 1342 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
14.01.2011, 02:35     Тернарная операция #2
Возьмите условие тернарного выражения name.empty() в круглые скобочки.
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
14.01.2011, 03:00  [ТС]     Тернарная операция #3
Непонял( Покажите пожалуйста в коде.

Добавлено через 15 минут
(name.empty()) так что ли?
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
17.01.2011, 11:10  [ТС]     Тернарная операция #4
Два дня уже парю мозг. не могу найти или понять, в чём ошибка в этой программе. Подскажите пожалуйста.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
17.01.2011, 11:13     Тернарная операция #5
А что такое тернарная операция?
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.01.2011, 11:14     Тернарная операция #6
Какую ошибку-то выдаёт? У меня ваш код компилируется.
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
17.01.2011, 11:16  [ТС]     Тернарная операция #7
А какой у вас компилятор? Я пользуюсь Borland С++ 5.02

Добавлено через 1 минуту
Ошибка в предпоследней строке
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.01.2011, 11:16     Тернарная операция #8
DrSMERTb, сделайте милость - плесните на него серной кислоты и установите нормальный компилятор.
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.01.2011, 11:17     Тернарная операция #9
Как по вашему, может ли фраза "ошибка в предпоследней строке" являться ответом на вопрос "какая ошибка"? По-моему, не-а, не может.

Не по теме:

Хм, странно, у меня впервые ответы не склеились...

DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
17.01.2011, 11:18  [ТС]     Тернарная операция #10
Я б с радостью последовал вашему совету) Но дело в том, что это единственная версия борланда (из мной найденных), которая работает на Windows 7 x64
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.01.2011, 11:19     Тернарная операция #11
DrSMERTb,
Цитата Сообщение от DrSMERTb Посмотреть сообщение
это единственная версия борланда
Поставьте нормальный компилятор, повторяю. Поставьте, скажем, CodeBlocks, в его состав входит MinGW - порт GCC под винды.
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
17.01.2011, 11:25  [ТС]     Тернарная операция #12
А во всё разобрался)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <fstream>
#include <string>
 
using namespace std;
 
int main(int argc, char** argv)
{
    string name;
    ofstream fout;
    if (argc > 1 && argv[1])
    {
        name = argv[1];
        fout.open(name.c_str(), ios::out | ios::app);
    }
    ostream& sout = name.empty(); cout : fout;
    return 0;
}
Вот так нужно. А теперь можно справку по каждой строке если не трудно, что делает эта программа)
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.01.2011, 11:26     Тернарная операция #13
И что, по-вашему, теперь происходит в 16 строке? о_О

Добавлено через 38 секунд
Цитата Сообщение от DrSMERTb Посмотреть сообщение
Вот написал прогу
Цитата Сообщение от DrSMERTb Посмотреть сообщение
можно справку по каждой строке
Не вяжется, а?
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
17.01.2011, 11:27  [ТС]     Тернарная операция #14
Как и до этого даже не предпологаю.
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.01.2011, 11:28     Тернарная операция #15
DrSMERTb, так вот, вы сначала почитайте о том, что делает тернарная операция, а не только как она называется. А потом ещё можете почитать, что метод тыка - не наш метод, и надо знать, куда тыкать.
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
17.01.2011, 11:28  [ТС]     Тернарная операция #16
Цитата Сообщение от silent_1991 Посмотреть сообщение
И что, по-вашему, теперь происходит в 16 строке? о_О

Добавлено через 38 секунд


Не вяжется, а?
Ну ладно я эту прогу стянул с википедии. Просто в учебнике про этот вид операции ничего не упоминается.
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.01.2011, 11:29     Тернарная операция #17
Цитата Сообщение от DrSMERTb Посмотреть сообщение
в учебнике про этот вид операции ничего не упоминается
Не верю! (с)
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
17.01.2011, 11:31  [ТС]     Тернарная операция #18
Цитата Сообщение от silent_1991 Посмотреть сообщение
Не верю! (с)
Учебник Т.А. Павловская "с\с++ Программирование на языке высокого уровня" Можете почитать и сами в этом убедитесь.
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.01.2011, 11:33     Тернарная операция #19
DrSMERTb, вообще многие рекомендуют Павловскую сжигать сразу после покупки. Сам не читал, но я этим людям доверяю. Почитайте лучше Дейтелов, мне они понравились.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2011, 11:34     Тернарная операция
Еще ссылки по теме:

C++ Условие с двоеточием. Тернарная условная операция
Загадка: Что делает функция? Тернарная система исчисления и логика C++
Тернарная условная операция C++
Нюансы синтаксиса: объяснить как работает тернарная операция в заданном фрагменте кода C++
C++ Тернарная операция. Пустое значение

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

Или воспользуйтесь поиском по форуму:
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
17.01.2011, 11:34  [ТС]     Тернарная операция #20
Обязательно сделаю это. Но сейчас мне просто нужна справка по данной программе. Не больше и не меньше.
Yandex
Объявления
17.01.2011, 11:34     Тернарная операция
Ответ Создать тему
Опции темы

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