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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 176, средняя оценка - 4.63
Parallelogram
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 70
#1

Log по основанию 2 - C++

17.01.2011, 13:48. Просмотров 23546. Ответов 13
Метки нет (Все метки)

Люди, помогите!!!
Нужно написать функцию (Log по основанию 2).
Я делал через классы. Так что, все что можно было перегрузить (+,-,*,/) я перегрузил.
за скорость плачу
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2011, 13:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Log по основанию 2 (C++):

Функция для приближённого вычисления Log x по основанию 2 с помощью многочлена наилучшего приближения - C++
Привет всем, помогите написать программы),или если возможно дайте пожалуйста ссылки на похожие задачи!!!!!! 1)Написать и...

Перевод из системы по основанию 16 в систему по основанию 10 - C++
Помогите написать программу перевода из системы по основанию 16 в систему по основанию 10

Перевод из системы по основанию 8 в систему по основанию 10. - C++
Помогите сделать программу в C++ Вот услловие: Перевод из системы по основанию 8 в систему по основанию 10. #include<iostream> ...

Перевод из системы по основанию 10 в систему по основанию 8 - C++
Помогите написать программу перевода из системы по основанию 10 системы счисления в систему по основанию 8; Заранее благодарен

Перевод из системы по основанию 16 в систему по основанию 10 - C++
программа работает на ура обьясните что к чему хоть основную идею как работает , мне преподу обьяснять надо будет #include <iostream> ...

Перевод из системы по основанию 16 в систему по основанию 10 - C++
Перевод из системы по основанию 16 в систему по основанию 10 Добавлено через 21 минуту Помогите пожалуйста написать программу

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
deadlock
376 / 355 / 8
Регистрация: 14.12.2010
Сообщений: 1,265
17.01.2011, 14:00 #2
так а в чем проблема использовать функцию log10() из math.h, ну нужен тебе log(x) по основанию 2, ну и будет это: log10(x)/log10(2)
1
Parallelogram
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 70
17.01.2011, 15:57  [ТС] #3
В этом то и проблема.
я должен сам "с нуля" написать функцию, преобразуя ряд Фурье или там какой-н. др логарифмический ряд.
поэтому math.h не поможет
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
17.01.2011, 16:48 #4
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <iomanip>
#include <cmath>
 
double lnx(double);
 
int main()
{
    double x;
 
    std::cout << "Enter x: ";
    std::cin >> x;
 
    std::cout << std::setprecision(15) << "Lib Ln(x) = " << log(x) << std::endl;
    std::cout << std::setprecision(15) << "My  Ln(x) = " << lnx(x) << std::endl;
 
    return 0;
}
 
double lnx(double x)
{
    int a = 0;
 
    while (static_cast< int >(x) != 0)
    {
        x /= 10.0;
        ++a;
    }
 
    x -= 1;
 
    int n = 1;
    double an = -1.0;
    double result = 0.0;
 
    do
    {
        an *= -x;
        result += an / n;
        ++n;
    }
    while (an > 0 ? an : -an > 1E-16);
 
    return result + a * 2.302585092994046;
}
0
Parallelogram
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 70
17.01.2011, 19:25  [ТС] #5
silent_1991, спасибо.
я переделал твой код.
он послужил основой для моего.

Добавлено через 35 минут
теперь еще проблема:
Код
CRealNumber CRealNumber::Ln()
{
 CRealNumber xn, k, sigma = 0;
 x = -(1 - x) / (1 + x);
 xn=x;
for (int i=0; i<50; i++)
{
sigma+=xn;
k = x * x * (2 * i + 1) / (2 * i + 3);

xn = xn * k;
} 
return 2 * sigma;
}
выдает ошибки:
Error 2 error C2440: 'initializing' : cannot convert from 'int' to 'CRealNumber'
Error 3 error C2065: 'x' : undeclared identifier

я не понимаю что делать надо.


просто функцию я оформил:
Код
#include "stdafx.h"
#include <iostream>
using namespace std;


double ln(double x)
{
double xn, k, sigma = 0;
x = -(1 - x) / (1 + x);
xn=x;
for (int i=0; i<50; i++)
{

sigma+=xn;
k = x * x * (2 * i + 1) / (2 * i + 3);
cout << "\n" <<  x * x * (2 * i + 1) / (2 * i + 3)  << "\n";

xn*=k;
}
return 2 * sigma;
}

int main()
{
	double x;
cin >> x;
cout << ln(x);
	system("pause");
	return 0;
}
а переоформить ее в класс я не могу(
! ! ПОМОГИТЕ ! !
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
17.01.2011, 19:33 #6
Parallelogram, у вас при вычислении значения типа CRealNumber происходит вычисление с использованием значения типа int. Вот он и говорит, что не может int к CRealNumber преобразовать. Более простой способ, использовать в качестве счётчика i значение типа CRealNumber, более сложный - перегрузить операцию приведения типа int к CRealNumber.

Добавлено через 27 секунд
Ну и x не объявлена.
0
Parallelogram
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 70
17.01.2011, 19:41  [ТС] #7
не понимаю:
>> использовать в качестве счётчика i значение типа CRealNumber <<
KAK
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
17.01.2011, 19:43 #8
C++
1
for (CRealNumber i=0; i<50; i++)
Только перегрузите также операцию инкремента (лучше использовать преинкремент) и сравнения с числом типа int.
0
Parallelogram
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 70
17.01.2011, 19:53  [ТС] #9
неее, ничего не понимаю (
с функциями я еще более менее дружу (если бы не задание, я бы уже давно ими и сделал), а с классами я просто == NULL
даже смутно представляю как они работают
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
17.01.2011, 19:57 #10
Цитата Сообщение от Parallelogram Посмотреть сообщение
Я делал через классы. Так что, все что можно было перегрузить (+,-,*,/) я перегрузил.
Как-то с вашим последним постом не вяжется...
0
Parallelogram
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 70
17.01.2011, 20:02  [ТС] #11
так перегрузку я делал 4 дня... и то не все условия удовлетворяются (касяков много)
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
17.01.2011, 20:25 #12
Parallelogram, киньте исходник.
0
Parallelogram
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 70
17.01.2011, 21:13  [ТС] #13
Прога:
0
Вложения
Тип файла: rar Log.rar (4.8 Кб, 56 просмотров)
Parallelogram
0 / 0 / 0
Регистрация: 17.01.2011
Сообщений: 70
18.01.2011, 07:30  [ТС] #14
Товарищи, кто поможет, конечно же не за просто так (200р)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2011, 07:30
Привет! Вот еще темы с ответами:

По заданым значениям х и у найти значение величины log x y (log с основанием х) - C++
Подскажите,где ошибка в if-else.Потому-что,когда вводить вместо х или у 0,почему-то еррор не выдает,а что-то непонятное каждый раз.Спасибо....

по заданым значениям х и у найти значение величины log x y (log с основанием х ) - C++
я в принципе понимаю как написать эту программу,но,хоть убейте,в хелпе visual studio 2008 не могу найти ,как обозначать логарифм.нашла...

Логарифм m по основанию n - C++
Написать функцию, которая по целым n и m вычисляет и возвращает .(логарифм m по основе n).

Вычисление логарифма по основанию - C++
Здравствуйте, как в языке си вычисляется логарифм по основанию?


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

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

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