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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 65, средняя оценка - 4.86
koperfild
9 / 9 / 3
Регистрация: 04.12.2011
Сообщений: 137
#1

abs(float x) - C++

18.01.2012, 18:24. Просмотров 8427. Ответов 7
Метки нет (Все метки)

Я не понимаю почему но у меня функция abs возвращает модуль от int чисел и всегда 0 от double чисел. В чём может быть проблема?Хотя вот в данном примере частное a/b получается, но как-то без знаков после запятой, а abs(b) стабильно 0.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <stdlib.h>
 
int main(){
int k,l;
double a,b;
k=233;
l=-122;
a=10.230;
b=0.02315;
k=abs(k);
l=abs(l);
a=abs(a/b);
b=abs(b);
printf ("%d %d %lf %lf",k,l,a,b);
scanf("%d",&k);
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2012, 18:24     abs(float x)
Посмотрите здесь:

std::abs vs global abs - C++
Откуда растут ноги такого поведения, что std::abs возвращает double, а глобальная ::abs() - int ? #include &lt;iostream&gt; #include &lt;cmath&gt; ...

Ошибка cannot convert 'float' to 'float*' - C++
Здравствуйте, что означает error: cannot convert 'float' to 'float*' for argument '1' to 'int mas_time(float*, int)'? Из-за чего она...

Function abs - C++
Ошибка 1.error C2668: abs: неоднозначный вызов перегруженной функции строка 12 Ошибка 2.error C2668: abs: неоднозначный вызов...

Pow and ABS problems - C++
Задали протабулировать функцию вот код, ошибки в pow, abs // 333333.cpp : Defines the entry point for the console application. // ...

abs для типа double - C++
У меня в программе нужно сравнивать разность модулей двух чисел, но abs конвертирует в int. Как это можно обойти при этом чтоб минимально...

Преобразовать выражение используя функцию abs - C++
как можно заменить это,через модуль? if((i &gt; -1000 &amp;&amp; i &lt;-99)||(i &lt; 1000&amp;&amp; i &gt;99))

Тип выводимых данных. abs() и fabs() - C++
Здравствуйте, столкнулся с такой проблей при выводе через cout данных типа double выводится почемуто только 2 знака после запятой(хотя их...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.01.2012, 18:27     abs(float x) #2
fabs
koperfild
9 / 9 / 3
Регистрация: 04.12.2011
Сообщений: 137
18.01.2012, 18:59  [ТС]     abs(float x) #3
Т.е. компилятор может не поддерживать с++ функцию abs для double?
soon
2538 / 1303 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.01.2012, 19:04     abs(float x) #4
Цитата Сообщение от koperfild Посмотреть сообщение
Т.е. компилятор может не поддерживать с++ функцию abs для double?
Дак у вас Сишный код. А на плюсах так будет
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <cmath>
 
int main()
{
    std::cout << std::abs(-1.2) << std::endl;
    return 0;
}
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
18.01.2012, 19:08     abs(float x) #5
Цитата Сообщение от koperfild Посмотреть сообщение
Т.е. компилятор может не поддерживать с++ функцию abs для double?
Есть две перегруженные функции
C++
1
2
int abs ( int n );
long abs ( long n );
Можете дописать еще свою

Добавлено через 2 минуты

Не по теме:

soon, всегда думал, что abs() в cstdlib описан



Добавлено через 48 секунд
В cmath есть и такая перегрузка
C++
1
2
3
double abs (      double x );
      float abs (       float x );
long double abs ( long double x );
soon
18.01.2012, 19:11
  #6

Не по теме:

Цитата Сообщение от go Посмотреть сообщение
soon, всегда думал, что abs() в cstdlib описан
Там не std::abs().

koperfild
9 / 9 / 3
Регистрация: 04.12.2011
Сообщений: 137
19.01.2012, 13:19  [ТС]     abs(float x) #7
Ещё 1 вопрос. В проге есть проверка на то пустой ли файл
C++
1
2
3
4
if (fscanf(in,"%lf",&k)==0){
   perror("file pyst");
   exit (-1);
}
Я поставил после этого для проверки printf ("%lf",k) и эта k при действительно пустом файле почему то получается большим целым числом(что-то около 6 символов). Хотя вроде как конец файла это -1. Почему так
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2012, 13:23     abs(float x)
Еще ссылки по теме:

Не используя стандартных функций за исключением abs вычислить - C++
Дан одномерный целочисленный массив А размерностью N . Определить количество чисел в наиболее длинной последовательности из подряд идущих...

Функция abs и как обойтись без нее - C++
Нужна помощь. При написании кода столкнулся с некой проблемой, что при использовании функции abs работает все отлично, но мне ее...

Ошибка: error C2668: abs: неоднозначный вызов перегруженной функции - C++
Мне выкидывает ошибку при сборке. 1&gt; QueueTest.cpp 1&gt;c:\documents and settings\администратор\рабочий...

Ошибка: error C2668: abs: неоднозначный вызов перегруженной функции - C++ - C++
Мне выкидывает ошибку при сборке. 1&gt; CCRakNetSlidingWindow.cpp 1&gt;..\Common\RakNet\CCRakNetSlidingWindow.cpp(221): error C2668: abs:...

написать программу,которая распечатывает заданное количество значений функции abs(tg(x)) - C++
Ребят,помогите,пожалуйста,написать программу,которая распечатывает заданное количество abs(tg(x)) и соответствующие значения...


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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.01.2012, 13:23     abs(float x) #8
koperfild, fscanf возвращает ноль, значит было присвоено 0 значений. Вывод: в k ничего не записывалось, и в нем хранится "прошлое" значение. Если до этого k не инициализировали, то там хранится мусор, который вы выводите (если, конечно, k - локальная переменная).
Yandex
Объявления
19.01.2012, 13:23     abs(float x)
Ответ Создать тему
Опции темы

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