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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2011, 12:31   #1
X_RaY
Пользователь
 
Регистрация: 06.03.2011
Сообщений: 16
По умолчанию Написание формул в С++

Друзья,доброго дня!

Помогите написать формулу в С++! Я написал кое как,но она не правильно считает (код даже присылать не буду по причине убогости). Или дайте пожалуйста название литературы,где это расписано. Алгоритму написания тоже буду рад. Спасибо!
Изображения
Тип файла: png form.png (2.1 Кб, 118 просмотров)
X_RaY вне форума Ответить с цитированием
Старый 23.07.2011, 12:54   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
код даже присылать не буду по причине убогости
Ну так я тоже могу сказать что код присылать не стану по причине нежелания его показывать...
Давай не стесняйся.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.07.2011, 13:14   #3
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,871
По умолчанию

P=0;
цикл FOR по всем i=0 до m
начало
C=... //считаем твои коэффициенты С(n) по формулам
N=...//берём твоё число из задачи
L=...// это твоё греческое число лямбда
P=P+C*exp((i-N)*L*t)*((1-exp(-L*t))^i)
конец
cout<<"P="<<P<<endl;

это лишь примерно набросано и очень грубо.
формул маловато дал...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 23.07.2011, 23:04   #4
X_RaY
Пользователь
 
Регистрация: 06.03.2011
Сообщений: 16
По умолчанию

Ну это одна формула на самом деле. Где С,это число сочетаний из N по i,а не С(n). Простите,вопрос нубский. Разьве С понимает "^"?

За совет спасибо,завтра попробую реализовать. Мой код вот какой:

int res = 1;
for(int i1 =1;i1<=nm;i1++)///Факториал nm (N)
{
res*=i1;

}

int res1= 1;
for (int i2= 1;i2<= i;i2++)///Факториал i
{
res1*=i2;


}

int raznicani = nm - i; ;
int res2 = 1;
for (int i3 =1;i3 <= raznicani;i3++)////Факториал разницы N-i
{
res2*=i3;

}

so41 = res1*res2;/////
so4 = res/so41;///// Расчет числа сочетаний.

int stepen;
stepen = -(nm-i)*lamda*vrem;///расчет степени

exponenta = exp(-(nm-i)*lamda*vrem);///расчет экспоненты 1
exponenta2 = exp (-(lamda*vrem));///расчет экспоненты 2
float skobka;
skobka = 1-exponenta2;
float skobka2;
skobka2 = pow(skobka,i);///расчет степени скобки формулы
float form1;///собираем все после суммы
form1 = so4*exponenta*skobka2;
summ1 =0;
for (im1 =0;im1<=m;im1++)///сумма

{
summ1= form1+summ1;
}


Я в математике не очень силен,да и в программировании новичек. Код считает немного не то.

Буду рад еще советам =)
X_RaY вне форума Ответить с цитированием
Старый 23.07.2011, 23:12   #5
l1pton17
Пользователь
 
Аватар для l1pton17
 
Регистрация: 01.11.2010
Сообщений: 75
По умолчанию

Как бы так сказать... Числовый переменные(это int которые) носят именно числовые данные, а не вид выражения. Так что цикл надо делать не в самом конце, а всё под цикл.
Код:
 int res;
 int res1;
 int res2;
 int raznicani;
 int i1;
 int i2;
 int i3;
 int stepen;
 summ1 =0;
 for (im1 =0;im1<=m;im1++)///сумма 
 {
  res = 1;
 for(i1 =1;i1<=nm;i1++)///Факториал nm (N)
 {
 res*=i1;

 }

 res1= 1;
 for (i2= 1;i2<= i;i2++)///Факториал i
 {
 res1*=i2;


 }

 raznicani = nm - i; ;
 res2 = 1;
 for (i3 =1;i3 <= raznicani;i3++)////Факториал разницы N-i
 {
 res2*=i3;

 }

 so41 = res1*res2;/////
 so4 = res/so41;///// Расчет числа сочетаний.

 stepen = -(nm-i)*lamda*vrem;///расчет степени

 exponenta = exp(-(nm-i)*lamda*vrem);///расчет экспоненты 1
 exponenta2 = exp (-(lamda*vrem));///расчет экспоненты 2
 float skobka;
 skobka = 1-exponenta2;
 float skobka2;
 skobka2 = pow(skobka,i);///расчет степени скобки формулы
 float form1;///собираем все после суммы
 form1 = so4*exponenta*skobka2;
 summ1+= form1;
 }
l1pton17 вне форума Ответить с цитированием
Старый 25.07.2011, 21:27   #6
X_RaY
Пользователь
 
Регистрация: 06.03.2011
Сообщений: 16
По умолчанию

Друзья,беда!!! Формула должна быть в одну строчку.

А так,считает,но не то =)
X_RaY вне форума Ответить с цитированием
Старый 25.07.2011, 21:36   #7
X_RaY
Пользователь
 
Регистрация: 06.03.2011
Сообщений: 16
По умолчанию

NetSpace,спасибо,но строка тоже не работает. Жаулется,что,мол найденно больше одного экземпляра перегруженная функция. Указывает на exp,первую и вторую.
X_RaY вне форума Ответить с цитированием
Старый 25.07.2011, 22:08   #8
Вирт
Заблокирован
 
Регистрация: 05.05.2011
Сообщений: 6
По умолчанию

Попробуй так:
Цитата:
for(i=1;i<=m;i++)
res+=fact(N)/(fact(i)*fact(N-i))*pow(2.71828,(-(N-i)*l*t))*pow((1-pow(2.71828,-l*t)),i);
Функция fact():
Цитата:
int fact(int n){
if((n==1)||(n==0))
return 1;
else
return fact(n-1)*n;
}
Вирт вне форума Ответить с цитированием
Старый 26.07.2011, 21:30   #9
X_RaY
Пользователь
 
Регистрация: 06.03.2011
Сообщений: 16
По умолчанию

Сделал так:
#include "stdafx.h"
#include <math.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int fact(int n){
if((n==1)||(n==0))
return 1;
else
return fact(n-1)*n;
}


float i=1;
float m=1;
float n=1;
float N=n+m;
float l =1;
float t =1;
float res;






int main()
{
for(i=1;i<=m;i++)
res+=fact(N)/(fact(i)*fact(N-i))*pow(2.71828,(-(N-i)*l*t))*pow((1-pow(2.71828,-l*t)),i);
}

Ругается на все pow,говорит,что существует более одного экземпляра перегруженная функция pow,соответсвующего списку аргументов.
X_RaY вне форума Ответить с цитированием
Старый 26.07.2011, 23:56   #10
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Код:
#include <math.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int fact(int n){
if((n==1)||(n==0))
return 1;
else
return fact(n-1)*n;
}
float i=1;
float m=1;
float n=1;
float N=n+m;
float l =1;
float t =1;
float res;
int main()
{
for(i=1;i<=m;i++)
res+=fact(N)/(fact(i)*fact(N-i))*exp(-(N-i)*l*t)*exp(-l*t);
}
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление формул Olya1985 Microsoft Office Excel 1 27.03.2011 11:51
Пересчет формул Uralmaster Microsoft Office Excel 4 03.02.2011 13:00
написание формул pooiu Паскаль, Turbo Pascal, PascalABC.NET 1 20.01.2011 16:48
Написание математических формул Slavik HTML и CSS 8 17.02.2009 20:41
Анализатор формул KJIOyH Помощь студентам 1 05.11.2007 18:18