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

Тернарный оператор vs if/else - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу, вычисляющую периметр треугольника, заданного координатами вершин. http://www.cyberforum.ru/cpp-beginners/thread718602.html
Разработать функцию, вычисляющую длину стороны по координатам двух точек. Написать программу, вычисляющую периметр треугольника, заданного координатами вершин.
C++ Рассчитать значения у для значений х Создай цикл в котором первоначальное значение 4 , значение ограничено 29(так как 28 включается ) после чего задай уравнение с данным значением , также рекомендую использовать динамический массив , вывести все значения на экран http://www.cyberforum.ru/cpp-beginners/thread718600.html
Разбиение на токены C++
Написать и протестировать функцию разбиения строки на отдельные слова. Параметр функции — исходная строка, результат работы — динамический массив строк, каждый элемент которого — очередное слово из исходной строки. По-простому можно считать, что слова в исходной строке отделены друг от друга пробелами (одним или несколькими), по-хорошему — функция должна принимать в качестве второго аргумента...
C++ Замена слов
Напишите программу, которая считывает с клавиатуры строку символов, после чего выводит ее на экран, предварительно заменив в ней все вхождения слова «Medvedev» на слово «Putin». Замену можно производить непосредственно при выводе, не меняя строку в памяти. Если в каком-то месте строки сочетание букв «Medvedev» является частью другого, более длинного, слова — то, естественно в этом случае замену...
C++ ПОЧЕМУ std::erxception не ловит ошибку? http://www.cyberforum.ru/cpp-beginners/thread718597.html
Решил изучить try, catch/Объясните плиз.Не пойму, почему catch не ловит ошибку?ПРогаю на MSVS 2008/ #include<stdexcept> #include <stdio.h> using namespace std; int main(int argc, char *argv) { int *p; try { p=new int;
C++ вывевсти число в дополнительном коде Пожалуйста, решите задачку: Выведите целое число в дополнительном коде с использованием двоичного побитового И подробнее

Показать сообщение отдельно
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
03.12.2012, 23:31     Тернарный оператор vs if/else
я такие штуки не очень люблю из-за того, что мне неудобно их дебажить.
вот допустим нужно вам узнать значение расчета на какой-то конкретной итерации, как без изменения кода это сделать? это надо хорошо с отладчиком дружить. для этих целей мне больше по душе вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
int sum (int *arr, size_t size)
{
    if (size == 0)
    {
       return 0; // тут легко поставить бряку. 
    }
 
     const int result = *arr + sum (arr + 1, size - 1);
 
     return result; // тут тоже можно бряку поставить.
}
строчек больше, но в эту функцию полезут за разберательством только когда возникнут проблемы и тогда эта простота пригодится. если проблем нет - то и в функцию никто лезть не будет и для вызывающего кода этот вызов остается однострочным.

Добавлено через 9 минут
продолжаем ликбез.
вот допустим вызывающий код такой:
C++
1
2
3
4
5
6
7
8
if (sum(arr, size) > 10)
{
   ...
}
else
{
  ...
}
и тут код начинает заползать не в ту ветку, в которую ожидалось. т.е. сумма считается неправильно.
берем дебагер и заходим в функцию sum, а там одна строчка:
C++
1
return size ? *arr + sum (arr + 1, size - 1) : 0;
Я вот не знаю как в дебагере узнать, что же в результате возвращается. в более многострочной функции это сделать проще. но даже в этом случае я стараюсь в ифы не вставлять вызов функций. вместо этого предпочитаю:

C++
1
2
3
4
5
6
7
8
9
const int summ = sum(arr, size);
if (summ > 10) // вот чтобы узнать в отладчике результат суммирования, не нужно уходить вглубь вызовов.
{
   ...
}
else
{
  ...
}
 
Текущее время: 21:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru