Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2015, 04:26   #41
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Если формула правильная, то кроме переполнения проблем не должно быть.

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
а что лучше использовать :

Код:
...<<std::endl; //или: 

using namespace std;

...<<endl;
?
Все зависит от того, насколько большой проект. Если проект большой, то подключать пространство имен всех классов не вариант, т.к. они могут в итоге просто перекрыть друг друга (т.е. функции могут быть с одинаковыми названиями у классов).

Я может цель задачи не понял, но чем не вариант считать экспоненту так:

Код:
long double exponent(long double eps)
{
    long double s=1;
    long double n=1;
    long double a=1;

    while (1)
    {
        a=a/n;
        if (fabs(a) <= eps) break;
        s=s+a;
        n++;
    }

    return s;
}

int main()
{
    cout.precision(30);
    cout << "e = " << exponent(1e-20) << endl;
    return 0;
}
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Stilet; 19.07.2015 в 07:34.
Krasiosoft вне форума Ответить с цитированием
Старый 19.07.2015, 08:52   #42
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Цель задачи - тренировка применения рекурсии) поэтому такой метод решения не подходит.

Ребят, прошу обратить внимание на пост 36, все же очень интересно знать
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 19.07.2015, 17:15   #43
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
Цель задачи - тренировка применения рекурсии) поэтому такой метод решения не подходит.
С варианта, который описал я, тоже можно сделать рекурсию, там проблема не в рекурсии.

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
Ребят, прошу обратить внимание на пост 36, все же очень интересно знать
Если написать так:

Код:
void recursia(long i){
    if(i>0) recursia(i-1);
    std::cout<<"i="<<i<<std::endl;
}
int main(){

    recursia(100000000);

    return 0;
}
то программа вылетает с исключением 0xc00000fd, это переполнение стека. Каждый вызов функции, это как минимум 8 байт со стека, в этом и есть проблема. Тут нужно больше выделять памяти под стек, примерно 762 МБ
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 19.07.2015, 18:09   #44
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

А можно ли как нибудь при каждом вызове функции выделять память под стек, затем вернуть значение и затереть память всю, кроме той, что выделена под сумматор?

Т.е. использовать одни и те же 8 бит к примеру
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 19.07.2015, 18:24   #45
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

Перевыделить память для стека может и можно как-то, нужно смотреть, не работал с этим. Но вот затирать в нем информацию нельзя, т.к. там хранятся адреса возврата из функций.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).
Krasiosoft вне форума Ответить с цитированием
Старый 19.07.2015, 18:25   #46
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

есть идея каким-то образом выкрутиться при помощи указателей и операторов new и delete, ребят, возможно кто-нибудь знает?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 19.07.2015, 18:38   #47
Krasiosoft
Форумчанин
 
Аватар для Krasiosoft
 
Регистрация: 01.06.2015
Сообщений: 497
По умолчанию

При вызове функций адреса возврата все равно будут попадать в стек. Как вариант - избегать рекурсий.
Если помог, буду очень благодарен за Ваш отзыв (весы в левой нижней части сообщения).

Последний раз редактировалось Krasiosoft; 19.07.2015 в 18:42.
Krasiosoft вне форума Ответить с цитированием
Старый 02.08.2015, 22:40   #48
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Оцените, вычисляет число ПИ

Код:
#include <iostream>
#include<math.h>
 
double Pi(long long N)
{
double res=0;
static int k=1;
 
res=(N==1)?4:Pi(N-1)+(((2*N)%4)?1:-1)*4.0/(2*N-1);
std::cout<<"N="<<N<<"k="<<k<<"res="<<res<<"\n";
return res;
}
int main()
{
for(inti=1;i<25000;i++)
std::cout<<std::fixed<<std::setprecision(25)<<Pi(i)<<std::endl;;
return 0;
}
from dark to light)

Последний раз редактировалось Алексей_2012; 02.08.2015 в 22:57.
Алексей_2012 вне форума Ответить с цитированием
Старый 23.10.2015, 21:13   #49
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Ребят, почему-то не работает рекурсивный вызов функции, программа вылетает

Нужной найти сумму ряда:

(1/2)+ (3/4) + (5/6) + (7/8)+...+

Код:
#include <iostream>

using namespace std;

float recursion (int chislo)
{

 float a=chislo/(chislo+1);

    if (chislo<=0) return 1;
    else return a+recursion(chislo--);
}

 int main()
{

     cout << recursion(1.0);

    return 0;
}
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 23.10.2015, 22:38   #50
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Ребят , в чем проблема может быть?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рекурсия Ника-Вероника Паскаль, Turbo Pascal, PascalABC.NET 6 23.03.2012 21:43
Рекурсия unbanned Паскаль, Turbo Pascal, PascalABC.NET 7 19.01.2012 11:25
Рекурсия dusya9992 Паскаль, Turbo Pascal, PascalABC.NET 4 29.08.2010 14:14
Рекурсия Solnze2 Паскаль, Turbo Pascal, PascalABC.NET 0 09.06.2010 09:28
Рекурсия Shadows_Behind Помощь студентам 6 26.05.2010 15:07