Форум программистов, компьютерный форум, киберфорум
Наши страницы

Оператор 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++
Опишите функцию поиска максимального значения среди элементов линейного массива. С помощью этой функции составьте программу, которая определяет сумму максимальных значений строк двухмерном массиве...
подсчитать количество слов 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 элементов, который заполняется в функции, причем заполнение можно прервать. Функция должна вернуть ссылку на следующий элемент массива, для дальнейшего использования его размера.... подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
20.06.2013, 02:22

Не по теме:

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

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)));
}

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