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

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

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

C++ Ввод только целого числа
Определить, является ли введенная строка правильной записью целого шестнадцатеричного числа без знака C++
преобразовать символьное представление целого числа в целое число без исользования стандартных библ функций C++
Программа перевода целого числа без знака в двоичную систему счисления C++
Программа перевода целого числа без знака в двоичную систему счисления C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,021
Записей в блоге: 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;
}
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 1
26.10.2012, 02:59     Модуль целого числа без используя только + - * / % #3
Цитата Сообщение от lazybiz Посмотреть сообщение
Или даже так.
Если бы можно было использовать условие, то задача сводилась бы к умножению на -1 =)
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,021
Записей в блоге: 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];
}
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));
}
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,899
Записей в блоге: 2
Завершенные тесты: 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;
}
Yandex
Объявления
26.10.2012, 04:21     Модуль целого числа без используя только + - * / %
Ответ Создать тему
Опции темы

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