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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Мультик на c++ http://www.cyberforum.ru/cpp-beginners/thread348053.html
Как сделать мультик на c++ хотя бы из двух кадров?
C++ exception и cerr Страуструп пишет "... Если мы не перехватим исключение, связанное с выходом за границу допустимого диапазона индексов, или иные исключения, то сообщение об ошибке будет записано в стандартный поток ошибок сеrr ...", собственно мне интересно как информация об не перехваченных исключениях пишется в cerr и как её оттуда можно достать (ведь не перехваченные исключения приводят к завершению... http://www.cyberforum.ru/cpp-beginners/thread348019.html
C++ Указатели
Собственно хотел попросить пару задачек, чтобы проверить свои знания на C++ в области указателей. Заранее спасибо вам :)
Разделение числа C++
Ув.Форумчане. Возможно ли както методами языка разделить вещественное число на целую и вещественную часть в отдельные переменные?
C++ Поток ввода без ошибок http://www.cyberforum.ru/cpp-beginners/thread347978.html
В чем состоит задача: нужно организовать ввод вещественных чисел в массив с помощью cin. И нужно, чтобы при вводе символа не подходящего под double он выбивал ошибку и просил ввести снова. С помощью scanf я раньше делал такой макрос: #define scan( TEXT , FORMAT , ADRES) printf (TEXT); fflush(stdin); while(scanf(FORMAT,ADRES)!=1){ printf("\nОшибка ввода! "TEXT);fflush(stdin); } Зачем он нужен:...
C++ Запись в файл значения int (hex,ascii) Задача: Записать в файл значение int == 0x52494646 ("RIFF" in ASCII form) #include "stdafx.h" #include "iostream" #include "fstream" using namespace std; int _tmain(int argc, _TCHAR* argv) { fstream PCMFile("output.wav",std::ios::binary|std::ios::out|std::ios::in); подробнее

Показать сообщение отдельно
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.09.2011, 19:54     Тернарный оператор
Неактуально
Доброго времени суток.
Есть такой кусок кода, взятый из решения одной задачи:
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. И так у всех. Спасибо всем, кто хотел откликнуться.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru