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

натуральный логарифм - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 236, средняя оценка - 4.82
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
29.01.2010, 15:14     натуральный логарифм #1
по каким причинам натуральный логарифм может выдавать неточное число, а точнее неправильное число. например
C++
1
z=log(4*x);
при х равном одному или что эквивалентно log(4),результат которого должен быть 1.386, выводит чило -774932052 ??? как это исправить ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2010, 15:14     натуральный логарифм
Посмотрите здесь:

Натуральный ряд C++
C++ Логарифм
C++ Логарифм
Построить односвязный список из входных последовательностей натуральный чисел C++
C++ Логарифм
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Зоти Сергей
 Аватар для Зоти Сергей
228 / 226 / 13
Регистрация: 18.12.2009
Сообщений: 316
29.01.2010, 15:19     натуральный логарифм #2
Может Вы выводите данные не в том формате?
C
1
2
double n=log(4);
printf("%d\n",n);
выведет
мусор
а
C
1
2
double n=log(4);
printf("%f\n",n);
Выведет
1.386
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
29.01.2010, 15:29     натуральный логарифм #3
Непременно надо, чтоб в начале исходника стояло
#include <math.h>

Ежели этого нет, транслятор интерпретирует возвращенное log значение как целое
и получается абракадабрия
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
29.01.2010, 15:50  [ТС]     натуральный логарифм #4
интересно, а для экспоненты подобные условия имеются?

Добавлено через 43 секунды
на счет вложенного файла конечно спасибо, но я в курсе
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
29.01.2010, 15:53     натуральный логарифм #5
Цитата Сообщение от Day Посмотреть сообщение
Непременно надо, чтоб в начале исходника стояло
#include <math.h>
Ежели этого нет, транслятор интерпретирует возвращенное log значение как целое
и получается абракадабрия
Ежели этого нет, то вообще не известно, что такое log и ни о каком типе возвращаемого значения речи быть не может
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
29.01.2010, 17:28     натуральный логарифм #6
как это исправить ?
Чтобы бы исправлять нужно выложить готовую программу, а не одну строку кода.
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
29.01.2010, 21:10     натуральный логарифм #7
M128K145,
Ежели этого нет, то вообще не известно, что такое log и ни о каком типе возвращаемого значения речи быть не может
При трансляции файла с расширением .C неопознанные (необъявленные) функции трактуются
как возвращающие int. Ну, может warring выдать (если вы его об этом попросите)
С расширнием .CPP все значительно строже, будет ошибка трансляции.
Вр всяком случае это так у трансляторов серии Борланд
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
30.01.2010, 13:37     натуральный логарифм #8
Day, не надо нести чушь. Вызов необъявленных функций запрещён - просто потому, что неизвестно, что вызывать. Даже Борланд не знает, как вызывать неизвестные функции. Функция трактуется, как возвращающая тип int, если при её объявлении не указан тип возвращаемого значения (что вызывает предупреждения, но не ошибку).
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
31.01.2010, 10:37     натуральный логарифм #9
Вызов необъявленных функций запрещён - просто потому, что неизвестно, что вызывать.
В языке C можно вызвать.
Что значит неизвестно ?
Имя функции есть, код функции есть в библиотеке. Все вызовется.
Другое дело, что по умолчанию считается int func(), а там реально может быть double func().
Вот тебе код:
C
1
2
3
4
5
6
int main( void ) {
 
sqrt( 10.0 );
return 0;
 
}
Добавлено через 2 минуты
Даже Борланд не знает, как вызывать неизвестные функции.
Вот кто-кто, а Borland так вообще не эталон.

Функция трактуется, как возвращающая тип int, если при её объявлении не указан тип возвращаемого значения (что вызывает предупреждения, но не ошибку).
А также если вообще отсутствует объявление, то функция считается как возвращающая int.
Вот код:
C
1
2
3
4
5
6
7
8
9
10
11
12
int main( void ) {
 
my_func( 10.0 );
return 0;
 
}
 
double my_func( double x ) {
 
return 5.0;
 
}
Компиляция:
Код
1.c: In function 'main':
1.c:4: warning: implicit declaration of function 'my_func'
1.c: At top level:
1.c:9: error: conflicting types for 'my_func'
1.c:4: note: previous implicit declaration of 'my_func' was here
Добавлено через 1 минуту
Но там не компилируется, потому что вызывает ошибку.
А вот ниже код, который скопилируется - без объявления my_func().
C
1
2
3
4
5
6
7
8
9
10
11
12
int main( void ) {
 
my_func( 10.0 );
return 0;
 
}
 
int my_func( double x ) {
 
return 5;
 
}
Компиляция:
Код
1.c: In function 'main':
1.c:4: warning: implicit declaration of function 'my_func'
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
31.01.2010, 17:12     натуральный логарифм #10
холи макарони... Н-да, век живи - век учись. Такое ощущение, что Керниган и Ритчи в Челябинске этот Си изобретали...
odip
Эксперт C++
 Аватар для odip
7225 / 3287 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
31.01.2010, 19:47     натуральный логарифм #11
Язык Си - это низкоуровневый ассемблер.
От ассемблера собственно отличается:
1) переносимость на разные платформы
2) писать код проще, быстрее, надежнее

Если взять стандарт C99 - то это уже совершенно не тот C, который K&R
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2010, 16:14     натуральный логарифм
Еще ссылки по теме:

C++ Как в С++ реализовать(записать) LN (натуральный логарифм по основанию е)?
C++ Натуральный логарифм N слагаемых
Натуральный логарифм в asm C++

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

Или воспользуйтесь поиском по форуму:
cibertronic
 Аватар для cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
01.02.2010, 16:14  [ТС]     натуральный логарифм #12
мужики))) не ругайтесь)) борлад не борланд)) мне просто интересно было почему логарифм может не то выводить, оказывается что тип нужно явно указать, а если я математическую функцию спрашивал, то естественно знаю что для sqrt(),pow(),log() и тп нужно включать <math.h>))
думаютема исчерпана. всем спасибо)
Yandex
Объявления
01.02.2010, 16:14     натуральный логарифм
Ответ Создать тему
Опции темы

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