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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
juanxiaong
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 1
#1

Модуль целого числа без используя только + - * / % - C++

26.10.2012, 01:21. Просмотров 1739. Ответов 5
Метки нет (Все метки)

Недавно попалась интересная задача. Хотелось бы узнать красивое решение. Модуль целого числа без используя только + - * / %.
Можно было ее читерски сдать так:
C++
1
2
3
int abs(int x) {
    return sqrt(x * x);
}
Но говорят можно и без стандартных функции.
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2012, 01:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Модуль целого числа без используя только + - * / % (C++):

Вычислить квадратный корень из заданного целого числа, используя только побитовые операции - C++
Существует простой способ вычисления квадратного корня: квадратный корень из целого числа равен количеству последовательных целых чисел...

Определить цифры целого числа (тип числа - целое без знака) - C++
Определить цифры целого числа( тип числа-целое без знака), вычислить сумму полученных цифр. Помогите ,пожалуйста.

Ввод только целого числа - C++
Здравствуйте. Нужно сделать защиту от ввода букв, дробных чисел( 2.5) и цифр с запятой( 2,5) cin>>m; if (cin.fail()) { cout <<...

Написать группу перегруженных функций, которые возвращают модуль целого, длинного целого - C++
Вот задали в Университете написать програмки кому может пригодятся ришал,даю задание а ниже код: 1) Написать программу с помощью...

Можно ли взять корень квадратный из целого числа без остатка? - C++
Как унать, возможно ли вынести корень из числа а?

Программа перевода целого числа без знака в двоичную систему счисления - C++
Здравствуйте . Помогите , пожалуйста , реализовать программу перевода целого числа без знака в двоичную систему счисления , при этом...

5
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
26.10.2012, 02:41 #2
Цитата Сообщение от juanxiaong Посмотреть сообщение
без используя только
Что нельзя использовать? Я что-то не понял.

Добавлено через 14 секунд
C
1
2
3
4
5
6
unsigned int absi( int i )
{
    if ( i < 0 )
        return (~--i & 0x7fffffff);
    return i;
}
Добавлено через 9 минут
Или даже так.
C
1
2
3
4
5
6
unsigned int absi( int i )
{
    if ( i < 0 )
        return ~--i;
    return i;
}
1
Croessmah
Пришел
Эксперт CЭксперт С++
13759 / 7840 / 893
Регистрация: 27.09.2012
Сообщений: 19,254
Записей в блоге: 3
Завершенные тесты: 1
26.10.2012, 02:59 #3
Цитата Сообщение от lazybiz Посмотреть сообщение
Или даже так.
Если бы можно было использовать условие, то задача сводилась бы к умножению на -1 =)
0
castaway
Эксперт С++
4920 / 3028 / 372
Регистрация: 10.11.2010
Сообщений: 11,085
Записей в блоге: 10
Завершенные тесты: 1
26.10.2012, 03:09 #4
Цитата Сообщение от Croessmah Посмотреть сообщение
Если бы можно было использовать условие
А где сказано что нельзя использовать условие?

Можно так, но тут унарный минус:
C
1
2
3
4
int absi( int i ) {
    const int r[] = { i, -i };
    return r[(i & 0x80000000) >> 31];
}
0
nikeo
0 / 0 / 0
Регистрация: 25.10.2012
Сообщений: 20
26.10.2012, 03:21 #5
проще так
C++
1
2
3
4
int abs(int x)
{
 return (x>0 ? x:(-x));
}
0
Croessmah
Пришел
Эксперт CЭксперт С++
13759 / 7840 / 893
Регистрация: 27.09.2012
Сообщений: 19,254
Записей в блоге: 3
Завершенные тесты: 1
26.10.2012, 04:21 #6
Вот, вроде бы считает =)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int absi( int x )
{
    return  (((x%2)+((x+1)%2))%2)*x;
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    for(int i=9;i>-10;--i){
        cout<<"Модуль "<<i<<" = "<<absi(i)<<"\n";
    }
    system("pause");
    return 0;
}
0
26.10.2012, 04:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2012, 04:21
Привет! Вот еще темы с ответами:

Программа перевода целого числа без знака в двоичную систему счисления - C++
Здравствуйте . Помогите , пожалуйста , реализовать программу перевода целого числа без знака в двоичную систему счисления , при этом выдать...

Используя арифметические операции, определить и вывести сумму цифр трехзначного целого числа k (100<=k<=255) - C++
1)осуществить: - проверку корректности по типу вводимых значений; - проверку диапазонов вводимых значений. -Используя...

Преобразовать символьную запись целого десятичного числа без знака в целое число - C++
Преобразовать символьную запись целого десятичного числа без знака в целое число. В записи исходного числа могут быть пробелы (до и после...

Определить, является ли введенная строка правильной записью целого шестнадцатеричного числа без знака - C++
Помогите с задачами. 1)Определить, является ли введенная строка правильной записью целого шестнадцатеричного числа без знака. 2)...


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

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

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