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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.73
adamo86
2 / 2 / 0
Регистрация: 10.04.2011
Сообщений: 185
#1

Как убрать знак минус - C++

13.08.2011, 16:29. Просмотров 6191. Ответов 27
Метки нет (Все метки)

У меня int a = -7. Как программно получить a = 7?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.08.2011, 16:29     Как убрать знак минус
Посмотрите здесь:

Создать функцию, возвращающую знак числа – символ ‘+’ (плюс) или ‘–‘ (минус) - C++
Создать функцию, возвращающую знак числа – символ ‘+’ (плюс) или ‘–‘ (минус). Создайте функцию, которая целое число из интервала ...

Как убрать с конца строки знак переноса, после считывания ее из файла? - C++
Всем доброго дня. Говоря подробнее, я считываю информацию из текстового файла. Там находятся фамилии в столбик. После считывания строки, я...

Не могу убрать знак переноса строки - C++
Никак не получается убрать перенос строки. Помогите пожалуйста. Бьюсь уже несколько часов. #include <stdio.h> #include <stdlib.h>...

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

Как правильно перегружать унарный минус? - C++
Дайте правильный прототип перегрузки унарного минуса.

Как вызвать в главной программе оператор унарный минус - C++
Paint operator-(const Paint& p) { return Paint(-p.x,-p.y); }

Как сделать, чтобы калькулятор реагировал на унарный минус - C++
подскажите, как сделать, чтобы этот калькулятор реагировал на унарный минус? int prior(char c) { int a; if (c=='+' || c=='-')...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ромик0
9 / 9 / 0
Регистрация: 27.07.2011
Сообщений: 90
14.08.2011, 19:21     Как убрать знак минус #21
silentnuke,
Цитата Сообщение от silentnuke Посмотреть сообщение
если пройдете по дебагу, и посмотрите что находится в a, уведите что там изменился знак.
там знак не изменился. допишите
C++
1
cout << a;
в конце и увидите сами.(-7)
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 19:34     Как убрать знак минус #22
ромик0, не трогайте константы, они вам ничего плохого не сделали если положительное значение вам нужно записать в ту же переменную, типа a = -a;, то не делайте её константой.
ромик0
9 / 9 / 0
Регистрация: 27.07.2011
Сообщений: 90
14.08.2011, 19:46     Как убрать знак минус #23
talis , я и не думал трогать константы , просто интересно как можно было бы изменить их.
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 19:52     Как убрать знак минус #24
ромик0, #define'ы изменить невозможно, так как они являются константами препроцессора. Когда он проходит исходный файл, и видит употребление символьной константы (#define), он заменяет его на значение этой константы, причём это необязательно должно быть число:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#define PI 3.14f
 
void bar()
{
   float a = 44 * PI;
   
   // после прохода препроцессора превратится в
   
   float a = 44 * 3.14f;
}
 
 
//--------------------------
 
#define ARRAY_SIZE 44
#define ARRAY_OUT for( int i = 0; i < ARRAY_SIZE; i++ ) cout << array[i] << ' ';
 
void bar()
{
   int array[ ARRAY_SIZE ];
 
   ARRAY_OUT
   
   // после прохода препроцессора превратится в
 
   int array[ 44 ];
 
   for( int i = 0; i < 44; i++ ) cout << array[i] << ' ';
   
}
Сыроежка
Заблокирован
14.08.2011, 20:04     Как убрать знак минус #25
Цитата Сообщение от talis Посмотреть сообщение
ромик0, #define'ы изменить невозможно, так как они являются константами препроцессора. Когда он проходит исходный файл, и видит употребление символьной константы (#define), он заменяет его на значение этой константы, причём это необязательно должно быть число:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#define PI 3.14f
 
void bar()
{
   float a = 44 * PI;
   
   // после прохода препроцессора превратится в
   
   float a = 44 * 3.14f;
}
 
 
//--------------------------
 
#define ARRAY_SIZE 44
#define ARRAY_OUT for( int i = 0; i < ARRAY_SIZE; i++ ) cout << array[i] << ' ';
 
void bar()
{
   int array[ ARRAY_SIZE ];
 
   ARRAY_OUT
   
   // после прохода препроцессора превратится в
 
   int array[ 44 ];
 
   for( int i = 0; i < 44; i++ ) cout << array[i] << ' ';
   
}
Почему же нельзя изменить препроцессорную константу?! Задайте #undef, а затем #define уже с новым значением константы.
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
14.08.2011, 20:08     Как убрать знак минус #26
Цитата Сообщение от Сыроежка Посмотреть сообщение
Почему же нельзя изменить препроцессорную константу?! Задайте #undef, а затем #define уже с новым значением константы.
Ну так не во время же рантайма оно меняться будет :-)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    #define ALPHA 5
 
    int beta = 4;
 
    if( beta == 0 ) // FALSE
    {
        #undef ALPHA
        #define ALPHA 8
    }
 
    cout << ALPHA; // препроцессор игнорирует логику рантайма, хотя и имеет свою
 
    return 0;
}
Добавлено через 39 секунд
И кстати #undef тут необязателен.
silentnuke
Android Programmer
138 / 139 / 5
Регистрация: 08.12.2010
Сообщений: 421
14.08.2011, 20:39     Как убрать знак минус #27
Цитата Сообщение от ромик0 Посмотреть сообщение
silentnuke,

там знак не изменился. допишите
C++
1
cout << a;
в конце и увидите сами.(-7)
я же сразу сказал, что при компиляции вместо "a" поставится значение, поэтому cout не поможет увидеть, но если пройдете в дебаге, и посмотрите значение, увидите что оно изменилось.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2011, 23:21     Как убрать знак минус
Еще ссылки по теме:

Как вывести на консоль минимально плюсовой элемент одномерного массива от минус 10 до +10 - C++
Почему то выводит всегда мин элемент=0 // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int _tmain(int argc,...

как вывести знак £ - C++
как вывести знак £

Как узнать знак числа? - C++
как узнать знак числа для float или double. пишу в win32.

как задать знак пробела? - C++
Дано натуральное число n и символы s1,....,sn. Группы символов разделённые пробелом будут называться словами. Найти длину самого короткого...

Как проверить знак элемента массива? - C++
// Дано одномерный массив размерностью N, изменить последовательность элементов на обратную, // но если один из элементов отрицательный...


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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
14.08.2011, 23:21     Как убрать знак минус #28
Цитата Сообщение от Kastaneda Посмотреть сообщение
x=x-x-x;
А чё? Прикольно. Я бы не додумался
Вот ещё брутальный способ, только с INT_MIN в качестве параметра не задалось
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <limits.h>
 
#define mad_abs(x) (((x) & (1 << (sizeof(x) * CHAR_BIT - 1))) ? (~(x) + 1) : (x))
 
int main(void){
    int x;
    
    while ( printf("x = ") && scanf("%d", &x) == 1 )
        printf("mad_abs(x) = %d\n", mad_abs(x));
    
    return 0;
}
Yandex
Объявления
14.08.2011, 23:21     Как убрать знак минус
Ответ Создать тему
Опции темы

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