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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 00:05   #11
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

Нет,проблема куда ее подставлять)
Проблема как с ее помощью вынести факториал (2n+1)!
DIQUON вне форума Ответить с цитированием
Старый 29.11.2012, 00:07   #12
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Написать функцию factorial и использовать её.
Проблема написать функцию?

Только вот Вам это не нужно. Факториал растёт с колоссальной скоростью. 21! в десятичной записи имеет 20 цифр и не влезет даже в 64-разрядный целочисленный тип.
Умнее находить значение следующего слагаемого, отталкиваясь от предыдущего. Напишите предпоследнее слагаемое через n. Поделите на него последнее. Посмотрите, что получится.
Я не очень понял что вы имели ввиду:
Цитата:
Умнее находить значение следующего слагаемого, отталкиваясь от предыдущего. Напишите предпоследнее слагаемое через n. Поделите на него последнее. Посмотрите, что получится.
DIQUON вне форума Ответить с цитированием
Старый 29.11.2012, 00:15   #13
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Сообщение от DIQUON Посмотреть сообщение
Я не очень понял что вы имели в виду
У Вас есть последнее слагаемое: (-1)^n*x^(2n+1)/(2n+1)!. Напишите предшествующее слагаемое и поделите одно на другое.

Такое ощущение, что Вы не понимаете, что такое Вы, собственно, пытаетесь посчитать. В таком случае наивно надеяться, что получится научить считать заметно более тупой компьютер.
Abstraction вне форума Ответить с цитированием
Старый 29.11.2012, 00:35   #14
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

Если не трудно напишете это в коде программы,не могу понять как это написать
DIQUON вне форума Ответить с цитированием
Старый 29.11.2012, 14:23   #15
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Факториал растёт с колоссальной скоростью. 21! в десятичной записи имеет 20 цифр и не влезет даже в 64-разрядный целочисленный тип.
Автор темы в первом сообщении написал, что n = 10. Видимо, преподаватель учёл, что не нужно усложнять.

Зависит от требований. Можно написать double (1.7*10^308) если нужно с бОльшими числами работать. Может ваш метод с делением годится для сколь угодно больших чисел... Не знаю... Я честно говоря, не понял, что вы предлагали с делением.

Вот на doulbe изменил (и S в методе CalcS занулил, а то накапливалось бы):

Код:
/* 
 * File:   CFormulas.h
 * Author: Ivan
 *
 * Created on November 29, 2012, 2:20 AM
 */

#ifndef CFORMULAS_H
#define	CFORMULAS_H

class CFormulas {
public:
    CFormulas();
    double CalcFactorial(double arg);
    double CalcS(int n, double x);
private:
    double factorial;
    double S;
};

#endif	/* CFORMULAS_H */
Код:
/* 
 * File:   CFormulas.cpp
 * Author: Ivan
 * 
 * Created on November 29, 2012, 2:20 AM
 */

#include <cmath>
#include "CFormulas.h"

CFormulas::CFormulas() {
    factorial = 0;
    S = 0;
}

double CFormulas::CalcFactorial(double arg) {
    double result = 1;
    int i;
    for (i = 2; i <= arg; ++i) {
        result *= i;
     }
    return result;
}

double CFormulas::CalcS(int n, double x) {
    S = 0;
    for (int i = 0; i <= n; i++) {
        S = S + pow(-1, i) * pow(x, (2*i+1)) / CalcFactorial(2*i+1);
    }
    return S;
}
Код:
/* 
 * File:   main.cpp
 * Author: Ivan
 *
 * Created on November 29, 2012, 2:19 AM
 */

#include <cstdlib>
#include <iostream>
#include "CFormulas.h"

using namespace std;

/*
 * 
 */
int main(int argc, char** argv) {
    CFormulas mf;
    int n = 1;
    double x = 1.5;

    cout << mf.CalcS(n, x);
    
    return (EXIT_SUCCESS);
}
Цитата:
Сообщение от DIQUON Посмотреть сообщение
это как-то слишком сложно))
Вы же просили на С++. И там ничего сложного нет. Вы просто не всматривались.

DIQUON, когда будите тестить свою программу, то запустите какой-нибудь математический пакет (например, Mathcad) и наберите свои формулы .И на нескольких значениях сравните, правильно ли у вас программа считает.



Вот как выглядит в NetBeans при разработки с использованием CppUnit (я намеренно увеличил ожидаемый результат, чтобы спровоцировать ошибку):



Тут написано, как поставить и применять CUnit при разработке ПО на Си: http://netbeans.org/kb/docs/cnd/c-unit-test.html

А здесь CppUnit для С++: http://wiki.netbeans.org/CND69UnitTests

Ещё в NetBeans есть JUnit для Java: http://netbeans.org/kb/docs/java/junit-intro.html

И PHPUnit: http://netbeans.org/kb/docs/php/phpunit.html

xUnit - это супер!

P.S. Теперь я понимаю выражение: с***ь кирпичами

Последний раз редактировалось 8Observer8; 29.11.2012 в 14:29.
8Observer8 вне форума Ответить с цитированием
Старый 29.11.2012, 14:53   #16
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Автор темы в первом сообщении написал, что n = 10. Видимо, преподаватель учёл, что не нужно усложнять.
n=10, 2n+1=21, 21!>2^64.
Abstraction вне форума Ответить с цитированием
Старый 29.11.2012, 14:56   #17
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
n=10, 2n+1=21, 21!>2^64.
Ах, да Ваша правда Но double нас спасает, моя вторая версия программы верна

Последний раз редактировалось 8Observer8; 29.11.2012 в 14:59.
8Observer8 вне форума Ответить с цитированием
Старый 30.11.2012, 17:59   #18
DIQUON
Форумчанин
 
Регистрация: 01.11.2012
Сообщений: 122
По умолчанию

Забыл сказать что нужна табуляция на 10 частей
DIQUON вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как это написать tef Общие вопросы по Java, Java SE, Kotlin 0 15.05.2011 14:02
Как написать это на С++? daniil2010 Помощь студентам 2 18.04.2010 17:58
SOS! Как это написать и Excel? Vedodel Microsoft Office Excel 8 18.09.2009 21:07