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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.73
grenuj
6 / 6 / 0
Регистрация: 30.11.2013
Сообщений: 25
#1

Как положительной переменной присвоить отрицательное значение? - C++

02.12.2013, 20:57. Просмотров 2612. Ответов 14
Метки нет (Все метки)

Надо изменить знак числа на противоположный.
Условие: нельзя использовать клавишу "-"
Как это можно сделать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
 
int main()
{
    int a;
    
    cout << "Введите положительное число: ";
    cin >> a;
    
    ... Тут надо изменить знак числа на противоположный ...
    cout << "Отрицательное число равно " << a << endl;
    
    return 0;
}
Добавлено через 26 минут
Подскажите что-нибудь
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 20:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как положительной переменной присвоить отрицательное значение? (C++):

Как присвоить переменной значение pow? - C++
Здравствуйте! У меня есть число, которое нужно возвести в большую степень (например 7 в степень 132) и взять остаток который получится...

Как присвоить переменной значение элемента структуры? - C++
Имеется вот такой код, заполнение структуры происходит из файла. Сама структура заполняется верно(через отладчик смотрел). Мне нужно по...

как присвоить переменной char значение слова ? - C++
Здравствуйте ребята !! Я новичок в этом сайте , и даже новый в c++ . сегодня начал c++ . я знаю PHP , и решил учить c++ . и мне очень...

Как присвоить возвращаемое значение функции переменной? - C++
double sine(int index, int frequency) { return (100*sin(index*frequency)); } вопрос: как присвоить возвращаемое значение...

Как присвоить такое значение переменной int - C++
есть две переменные типа int int x=2; int y=3; я хочу чтобы третья переменная Z(тоже тип int) имело значение 23, то есть...

Как присвоить переменной Double значение NaN? - C++
Есть переменная типа double. Как ей присвоить значение NaN?

14
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
02.12.2013, 21:00 #2
Цитата Сообщение от grenuj Посмотреть сообщение
... Тут надо изменить знак числа на противоположный ...
C++
1
a *= -1;
Добавлено через 55 секунд
Либо
C++
1
a = -a;
0
newbie666
Заблокирован
02.12.2013, 21:03 #3
Цитата Сообщение от kazak Посмотреть сообщение
1
a = -a;
он говорил, не нажимая на клавишу минуса на клавиатуре
0
Alex5
1056 / 720 / 108
Регистрация: 12.04.2010
Сообщений: 1,847
02.12.2013, 21:09 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Для int a; -a эквивалентно ~a + 1
Пример.
C++
1
2
3
4
    int a, b, c;
    a = 1;
    b = ~a;  // 0xfffffffe это ещё не то, что надо 
    c = ~a + 1; // 0xffffffff , то есть -1
3
newbie666
Заблокирован
02.12.2013, 21:10 #5
Цитата Сообщение от grenuj Посмотреть сообщение
Условие: нельзя использовать клавишу "-"
чудное задние, ну если не используя клавиши минус на клавиатуре, тогда так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
    int a;
    
    cout << "Введите положительное число: ";
    cin >> a;
    
    a *= 0xffffffff;
 
    cout << "Отрицательное число равно " << a << endl;
    
    return 0;
}
1
Байт
Эксперт C
16141 / 10419 / 1552
Регистрация: 24.12.2010
Сообщений: 19,726
02.12.2013, 21:10 #6
Видимо, что-то связанное с битовыми операциями. Типа a = !a + 1
Точно не знаю, с битовыми операциями и представлением отрицательных чисел знакомился давно и все забыл.
0
Croessmah
Эксперт CЭксперт С++
13415 / 7566 / 855
Регистрация: 27.09.2012
Сообщений: 18,620
Записей в блоге: 3
Завершенные тесты: 1
02.12.2013, 21:11 #7
Цитата Сообщение от Байт Посмотреть сообщение
a = !a + 1
для побитового НЕ "~" вместо "!"
1
grenuj
6 / 6 / 0
Регистрация: 30.11.2013
Сообщений: 25
02.12.2013, 22:02  [ТС] #8
Цитата Сообщение от Alex5 Посмотреть сообщение
C++
1
2
3
4
int a, b, c;
   a = 1;
   b = ~a; *// 0xfffffffe это ещё не то, что надо 
   c = ~a + 1; // 0xffffffff , то есть -1
Цитата Сообщение от newbie666 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
int main()
{
    int a;
    cout << "Введите положительное число: ";
    cin >> a;
    a *= 0xffffffff;
    cout << "Отрицательное число равно " << a << endl;
    return 0;
}
Спасибо! С битовыми операциями более менее понятно. А вот при умножении числа на 0xffffffff еще не разобрался.
Это надо наверно сначала в столбик перемножить и посмотреть что получится. Почему получается именно отрицательное число при умножении
Но оба эти варианта правильно работают
0
newbie666
Заблокирован
02.12.2013, 22:18 #9
Цитата Сообщение от grenuj Посмотреть сообщение
Почему получается именно отрицательное число при умножении
Но оба эти варианта правильно работают
весь фокус в том, что 0xffffffff - это минус один в шестнадцатиричной системе исчисления в 32-х битной ОС То есть 0xffffffff = -1 , я как бы умножаю на минус один, не используя минуса, как ты и просил
Можешь в калькуляторе виндуса зайти в режим "программист" и в режиме dec набрать -1, далее нажать на кнопку hex и увидишь, что это за число
1
grenuj
6 / 6 / 0
Регистрация: 30.11.2013
Сообщений: 25
02.12.2013, 22:33  [ТС] #10
Цитата Сообщение от newbie666 Посмотреть сообщение
весь фокус в том, что 0xffffffff - это минус один в шестнадцатиричной системе исчисления
ну и ну. Оказалось все так просто, что даже и слов нет.
Тут единственное это то, что нужно знать эту систему счисления и преобразования.
0
newbie666
Заблокирован
02.12.2013, 22:53 #11
Цитата Сообщение от grenuj Посмотреть сообщение
Тут единственное это то, что нужно знать эту систему счисления и преобразования
даже и это не обязательно, если есть под рукой калькулятор windows
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
02.12.2013, 23:12 #12
C++
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    cout << cos(M_PI) << endl;              // -1
    cout << log10(0.1) << endl;             // -1
    cout << tan(M_PI*135.0/180.0) << endl;  // -1
    cout << copysign(1, 1<<31) << endl;     // -1
    cout << (1<<31)/(1<<30)/2 << endl;      // -1
}
1
Croessmah
03.12.2013, 11:23
  #13

Не по теме:

Цитата Сообщение от newbie666 Посмотреть сообщение
если есть под рукой калькулятор windows
а у меня и windows'а нет

0
newbie666
03.12.2013, 11:26
  #14

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
а у меня и windows'а нет
а в пингвинах что калькулятор как на старом мобильном телефоне ?

0
programina
03.12.2013, 11:31     Как положительной переменной присвоить отрицательное значение?
  #15

Не по теме:

Цитата Сообщение от newbie666 Посмотреть сообщение

Не по теме:


а в пингвинах что калькулятор как на старом мобильном телефоне ?

Расскажите это красноглазикам. Windows vs Linux (0Ch)

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2013, 11:31
Привет! Вот еще темы с ответами:

Как переменной Char присвоить значение целого текста? - C++
Пример текста: &quot;Верьте аль не верьте , а жил на белом свете Федот-Стрелец Удалой молодец......&quot;

Как присвоить переменной типа string значение из файла - C++
Название файла неизвестно, задается пользователем в командой строке при вызове программы. Т.е. Допусти, что мы присвоили переменной ...

Как присвоить переменной типа String значение argv[0]? - C++
Как присвоить переменной типа String значение argv? Заранее спасибо =)

Присвоить значение наименьшего элемента массива переменной М1, номер строки, где находится этот элемент, - переменной Т, номер столбца - переменной С - C++
Массив С действительных чисел имеет 5 строк и 11 столбцов. Присвоить значение наименьшего элемента массива переменной М1, номер строки, где...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.12.2013, 11:31
Ответ Создать тему
Опции темы

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