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

Вычислить уравнения - C++

Восстановить пароль Регистрация
 
Lana44
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 5
04.02.2012, 20:15     Вычислить уравнения #1
Добрый день!
Помогите пожалуйста решить 2 задачи на Языке С++

1. Вычислить y=√(3+√(6+⋯+ √(96+√99) ) )

2. Вычислить p=(1-1/2^2 )(1-1/2^3 )…(1-1/n^2 ),где n>2
Миниатюры
Вычислить уравнения  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
04.02.2012, 20:53     Вычислить уравнения #2
Цитата Сообщение от Lana44 Посмотреть сообщение
1. Вычислить y=√(3+√(6+⋯+ √(96+√99) ) )
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <math.h>
 
double foo(double a, double b, double h)
{
    return (a == b ? sqrt(a) : sqrt(a + foo(a + h, b, h)));
}
 
int main(void)
{
    printf("%f", foo(3.0, 12.0, 3.0));
    return 0;
}
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
05.02.2012, 05:05     Вычислить уравнения #3
Думаю, что во втором уравнении ошибка в условии.
2 в степени n, а не n в степени 2.
Lana44
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 5
05.02.2012, 10:24  [ТС]     Вычислить уравнения #4
Да, действительно, есть ошибка. Но не там...
Вот:
Миниатюры
Вычислить уравнения  
Lana44
0 / 0 / 0
Регистрация: 04.02.2012
Сообщений: 5
05.02.2012, 10:27  [ТС]     Вычислить уравнения #5
Цитата Сообщение от Jupiter Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <math.h>
 
double foo(double a, double b, double h)
{
    return (a == b ? sqrt(a) : sqrt(a + foo(a + h, b, h)));
}
 
int main(void)
{
    printf("%f", foo(3.0, 12.0, 3.0));
    return 0;
}
Спасибо, но что-то он ругается "error C3861: sqrt: идентификатор не найден"
Roof
 Аватар для Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
05.02.2012, 23:32     Вычислить уравнения #6
2 Lana44 - Сделайте сборку с ключом -lm

Добавлено через 42 минуты
2 Lana44 - опять же, думаю, что ошибка в Вашем условии во втором уравнении.
Как может быть n > 2, когда в самом условии в первых скобках есть 2 в степени 2.
Все же n >= 2 на мой взгляд, будет правильно.
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
double foo( unsigned n ) {
    return n > 1 ? ( 1.0 - 1.0 / ( n * n ) ) * foo( n - 1 ) : 1;
}
 
int main( void ) {
    printf( "%lf", foo( 4 ) );
    return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
06.02.2012, 12:47     Вычислить уравнения #7
Lana44, ниже код на плюсах 1-го задания(я написал расчёт 2-мя функциями - рекурсивно и с подсчётом в цикле, результат работы на скрине)
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
#include <iostream>
#include <cmath>
using namespace std;
 
//ÐåêóðñèâГ*îå âû÷èñëåГ*ГЁГҐ êîðГ*Гї
double rekursCalc(int val, int beg, int step)
{
    double sum = sqrt(val);
    if(beg < (val - step))
        sum += rekursCalc(val = val - step, beg, step);
    return sum;
}
 
//Ïðÿìîå âû÷èñëåГ*ГЁГҐ êîðГ*Гї Гў öèêëå
double directCalc(int val, int beg, int step)
{
    double sqr = sqrt(val);
    double sum = sqr;
    while( beg < (val = val - step))
    {
        sqr += val;
        sum += sqrt(val);
    }
    return sum;
}
 
int main()
{
    int beg, end, step;
    while(true)//ÌîæГ*Г® áóäåò äåëГ*ГІГј ââîä ГЎГҐГ±ГЄГ®Г*ГҐГ·Г*îå ÷èñëî Г°Г*Г§ 
        //×òîáû ïðåêðГ*ГІГЁГІГј Г°Г*áîòó - ïðîñòî Г§Г*êðûâГ*ГҐГ¬ îêГ*Г® ГЄГ®Г*ñîëè
    {
        cout<<"Enter beg  : ";cin>>beg;
        cout<<"Enter end  : ";cin>>end;
        cout<<"Enter step : ";cin>>step;
        cout<<"rekursCalc : "<<rekursCalc(end,beg,step)<<endl;
        cout<<"directCalc : "<<directCalc(end,beg,step)<<endl;
    }
    return 0;
}
Миниатюры
Вычислить уравнения  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2012, 13:12     Вычислить уравнения
Еще ссылки по теме:

C++ Вычислить методом Ньютона корень уравнения
Вычислить корни квадратного уравнения. C++
Вычислить корень уравнения C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
06.02.2012, 13:12     Вычислить уравнения #8
По второму заданию
Формула n-го сомножителя
http://www.cyberforum.ru/cgi-bin/latex.cgi?{p}_{n} = (1 - \frac{1}{{n}^{2}})
Ниже рабочий код на плюсах и скрин работы(снова рассмотрел рекурсию и прямое перемножение в цикле)
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
#include <iostream>
#include <cmath>
using namespace std;
 
//Перемножение сомножителей в цикле
double directMult(int i, int n)
{
    double mult = 1;
    for(; i <= n; i++)
        mult *= (1 - 1/pow(1.0*i,2.0));
    return mult;
}
//Рекурсивное перемножение
double rekursMult(int i, int n)
{
    double mult = (1 - 1/pow(1.0*i,2.0));
    if(i < n)
        mult *= rekursMult((i = i + 1), n);
    return mult;
}
 
int main()
{
    int beg, n;
    while(true)//Можно будет делать ввод бесконечное число раз 
        //Чтобы прекратить работу - просто закрываем окно консоли
    {
        cout<<"Enter beg: ";cin>>beg;
        cout<<"Enter n  : ";cin>>n;
        cout<<"rekursMult : "<<rekursMult(beg,n)<<endl;
        cout<<"directMult : "<<directMult(beg,n)<<endl;
    }
    return 0;
}
Миниатюры
Вычислить уравнения  
Yandex
Объявления
06.02.2012, 13:12     Вычислить уравнения
Ответ Создать тему
Опции темы

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