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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.69
DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
#1

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

14.01.2011, 02:18. Просмотров 4427. Ответов 34
Метки нет (Все метки)

Всем доброго времени суток. Вот написал прогу
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
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
14.01.2011, 02:35     Тернарная операция #2
Возьмите условие тернарного выражения name.empty() в круглые скобочки.
DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
14.01.2011, 03:00  [ТС]     Тернарная операция #3
Непонял( Покажите пожалуйста в коде.

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

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

Не по теме:

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

DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
17.01.2011, 11:18  [ТС]     Тернарная операция #10
Я б с радостью последовал вашему совету) Но дело в том, что это единственная версия борланда (из мной найденных), которая работает на Windows 7 x64
silent_1991
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
17.01.2011, 11:19     Тернарная операция #11
DrSMERTb,
Цитата Сообщение от DrSMERTb Посмотреть сообщение
это единственная версия борланда
Поставьте нормальный компилятор, повторяю. Поставьте, скажем, CodeBlocks, в его состав входит MinGW - порт GCC под винды.
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
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
17.01.2011, 11:26     Тернарная операция #13
И что, по-вашему, теперь происходит в 16 строке? о_О

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

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


Не вяжется, а?
Ну ладно я эту прогу стянул с википедии. Просто в учебнике про этот вид операции ничего не упоминается.
silent_1991
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 1
17.01.2011, 11:29     Тернарная операция #17
Цитата Сообщение от DrSMERTb Посмотреть сообщение
в учебнике про этот вид операции ничего не упоминается
Не верю! (с)
DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
17.01.2011, 11:31  [ТС]     Тернарная операция #18
Цитата Сообщение от silent_1991 Посмотреть сообщение
Не верю! (с)
Учебник Т.А. Павловская "с\с++ Программирование на языке высокого уровня" Можете почитать и сами в этом убедитесь.
silent_1991
Эксперт С++
4952 / 3028 / 149
Регистрация: 11.11.2009
Сообщений: 7,026
Завершенные тесты: 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
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
17.01.2011, 11:34  [ТС]     Тернарная операция #20
Обязательно сделаю это. Но сейчас мне просто нужна справка по данной программе. Не больше и не меньше.
Yandex
Объявления
17.01.2011, 11:34     Тернарная операция
Ответ Создать тему
Опции темы

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