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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.82
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
#1

Тернарный оператор - C++

04.09.2011, 19:54. Просмотров 2641. Ответов 0
Метки нет (Все метки)

Неактуально
Доброго времени суток.
Есть такой кусок кода, взятый из решения одной задачи:
C++
1
2
3
4
5
6
7
8
if ( c % 2 == 0 ? p < n : p > n ) 
{
   ++a;
}
else
{
   a = 0;
}
С ним решение проходит все тесты.
Я попытался его немного переделать:
C++
1
2
3
4
5
( c % 2 == 0 ? p < n : p > n ) 
?
   ++a
:
   a = 0;
Выдает неправильный ответ на первом же тесте. Хотя у меня нормально работает.
Есть 2 варианта:
1) Я чего-то не понимаю, мой код неоднозначен и будет выполнятся по разному на разных компиляторах.
2)Баг компилятора(VC++ 7.1 на проверяющей системе, проверял на 10й студии - все работает).

Помогите разобраться...

Задача.

Оба кода.
Получает Accepted.
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
36
#include <fstream>
int p, n, x, i, a, b, c;
 
int main()
{
    std::fstream v("input.txt"), o("output.txt", std::ios::out);
    
    for (v >> p >> p ; v >> n; ++c)
    {
        
        if ( c % 2 == 0 ? p < n : p > n ) 
        {
            ++a;
        }
        else
        {
            a = 0;
        }
        
        if ( c % 2 != 0 ? p < n : p > n ) 
        {
            ++b;
        }
        else
        {
            b = 0;
        }
        
        x = std::max( std::max(a, b), x );
        
        p = n;
    }
    
    o << x + 1;
 
}
Получает WA1.
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
#include <fstream>
int p, n, x, i, a, b, c;
 
int main()
{
    std::fstream v("input.txt"), o("output.txt", std::ios::out);
    
    for (v >> p >> p ; v >> n; ++c)
    {
        
        ( c % 2 == 0 ? p < n : p > n ) 
        ?
            ++a
            :
            a = 0;
        
        if ( c % 2 != 0 ? p < n : p > n ) 
        {
            ++b;
        }
        else
        {
            b = 0;
        }
        
        x = std::max( std::max(a, b), x );
        
        p = n;
    }
    
    o << x + 1;
 
}


Блин. Извиняюсь, это баг acmp =\ Пересдаю код, получивший Accepted, и получаю WA1. И так у всех. Спасибо всем, кто хотел откликнуться.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2011, 19:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Тернарный оператор (C++):

Тернарный оператор - C++
Добрый день, как доказать, что нету тенарного оператора ? Я как понимаю, есть только тенарная операция, которая представляет...

Тернарный оператор vs if/else - C++
Зачем? Ведь, так элегантнее. Начало http://www.cyberforum.ru/cpp-beginners/thread718192.html

Засунуть в тернарный оператор - C++
Помогите засунуть выражение if ( (i &lt; 0 || j &lt; 0) || (i &gt;= ROW || j &gt;= COL) || (i == oi &amp;&amp; j == oj)) continue; else if (arr)...

Альтернатива if (.) {.} (тернарный оператор) - C++
блин запамятовал как это делается пишут вместо стандартной формы что то типа y &lt; x : x = m напомните плиз как это называется, какие там...

Шахматы(заменить тернарный оператор) на if else - C++
#include &lt;iostream&gt; #include &lt;Windows.h&gt; using namespace std; void main() { int h, w, i, j; cout &lt;&lt; &quot;Введите...

Как работает тернарный оператор - C++
Здравствуйте. Объясните, пожалуйста, что значит эта строка color = (color == 'W') ? 'B' : 'W';

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2011, 19:54
Привет! Вот еще темы с ответами:

Тернарный оператор: возврат значения - C++
Приветствую. При компиляции ниже приведенного кода bool MyFunc() { bool flag = false; // .... некоторые действия // .......

Тернарный оператор и операторы безусловного перехода - C++
Здравствуйте, может кто-нибудь объяснить, почему не компилируется оператор ?, если в одной из последующих частей стоит break, return,...

Простая задачка про тернарный оператор - C++
Переписал с учебника простую задачку, однако на 10 и 12 строке показывает ошибки. Что тут не так? #include&lt;iostream&gt; #include&lt;cmath&gt; ...

Тернарный оператор и множество ошибок в коде - C++
Вот задание: И простой код: #include&lt;iostream&gt; using namespace std; int main() { int n,k; cin&gt;&gt;n; ...


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

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

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