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

Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Какой результат работы этой программы? http://www.cyberforum.ru/cpp-beginners/thread907071.html
int main(){ //(1) int var = 5; if(fork())wait(&var); var++; printf("%d\n",var); return var; }
C++ Функция создания очереди Задача такая: Вводится последовательность чисел. Написать функцию создания очереди. http://www.cyberforum.ru/cpp-beginners/thread907061.html
Описать функцию поиска максимального значения среди элементов линейного массива C++
Опишите функцию поиска максимального значения среди элементов линейного массива. С помощью этой функции составьте программу, которая определяет сумму максимальных значений строк двухмерном массиве действительных чисел. Помогите ПОЖАЛУСТА ЭТО СДЕЛАТЬ(( Добавлено через 26 минут ИЛИ ОБЬЯСНИТЕ КА ЭТО СДЕЛАЬТЬ
подсчитать количество слов C++
определить сколько раз слово встречается в заданой строке
C++ Перевести програму с паскаля на с++ http://www.cyberforum.ru/cpp-beginners/thread907020.html
Вот собственно она: matrix = array of integer; var a:matrix; i,j,k:integer; begin k:=0; for i :=1 to 5 do for j :=1 to 10 do
C++ Вернуть указатель на массив из функции Дан массив из 20 элементов, который заполняется в функции, причем заполнение можно прервать. Функция должна вернуть ссылку на следующий элемент массива, для дальнейшего использования его размера. #include <iostream> double *full_array(double , int); int main() { using namespace std; const int full_size = 10; double ar; подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
20.06.2013, 02:22     Оператор for, без if (Напишите программу, суммирующую числа в указанном пользователем диапазоне, но без оператора if, который устанавливает границы)

Не по теме:

Поняны, почему я до сих пор не увидел очевидного решения? Почему у всех какие-то ?:, && и циклы, которые на самом деле неявно используют ветвления?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cmath>
 
int sum(int a, int b)
{
    return (std::abs(a - b) + 1) * (a + b) / 2;
}
 
int main()
{
    int a;
    int b;
 
    std::cin >> a >> b;
    std::cout << sum(a, b);
}
Если что, то abs тоже можно написать без ветвлений:
C++
1
2
3
4
5
int abs(int x)
{
    int y = x >> 31;
    return (x ^ y) - y;
}
(Работает при условии, что компилятор определяет >> как арифметический сдвиг, а вместо 31 будет стоять реальное количество битов в инте без одного знакового.)



Добавлено через 5 минут

Не по теме:

Ну или так:

C++
1
2
3
4
5
int abs(int x)
{
    unsigned y = x;
    return x * (1 - 2 * !!(y & (y >> 1)));
}

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