2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Помогите с массивами в c++
Сообщение12.05.2010, 08:25 
Составить программу вычисления суммы 20 членов ряда:
x^2/2!+x^4/4!+...

Вот что у меня получилось:


#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <iomanip>
#include <ctype.h>
#include <math.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{int i;
double b, x, s;
double a[25];
cout << "vvedite 4islo x (4islitel') - ";
cin >> x;
cout << "vvedite 4islo i (stepen' 4islitelya) - ";
cin >> i;
cout << "vvedite 4islo b (znamenatel') - ";
cin >> b;
a[0]=0;
for (i=0; i<=21; i++)
{ a[i+1]=a[i]+1;
}
for( i=2;i<=21;++i)
{ b=b*i*(i-1);

}
for
( i=2; i>=40; i=i+2)
{
s=s+(pow(x,i)/b);
}
cout << "summa = " << s;



_getch();
return 0;

}


Что не так? В чём ошибки??? Выдайтся ошибка
Run-Time Check Failure #3 - The variable 's' is being used without being initialized.
Помогите пожалуйста

 
 
 
 Re: Помогите с массивами в c++
Сообщение12.05.2010, 09:48 
Так вам же нормальным английским сказано: переменная s используется без инициализации:
Код:
s=s+(pow(x,i)/b);

Либо пишите static s, чтобы она автоматически инициализировалась нулем, либо пишите явно double s = 0.;
А так - это, кстати, отнюдь не ошибка, а предупреждение (у вас просто уровень предупреждений высоко выставлен) - попытка взять значение из переменной, в которой содержится мусор.

 
 
 
 Re: Помогите с массивами в c++
Сообщение12.05.2010, 13:00 
Аватара пользователя
 i  Skam64, не плодите одинаковых тем.
Дубликат удалён.

 
 
 
 Re: Помогите с массивами в c++
Сообщение13.05.2010, 01:43 
2Skam64
Перепишите программку (и оформите правильно). Зачем в каждом слагаемом возводить x в степень с помощью pow если можно просто умножить предыдущую степень на x*x? Тоже самое и с факториалом... Вообще каждое следующее слагаемое легко получается из предыдущего, при этом частично отпадает необходимость хранить очень большие числа...

Хотя можно и сильнее оптимизировать, наверное...

 
 
 
 Re: Помогите с массивами в c++
Сообщение23.06.2010, 08:22 
А правильно это как?
подскажите плиз
прост препод на пары тупо забивает, а самостоятельно я чёт не разобрался ещё до конца

 
 
 
 Re: Помогите с массивами в c++
Сообщение23.06.2010, 09:40 
Цитата:
А правильно это как?

Почитайте Кернигана и Ритчи. Книжка небольшая, зато хорошо разжеваны азы языка С и оптимизация алгоритмов. Потом уже можете переходить к изучению плюсов.
Делайте отступы в коде, чтобы удобно было читать. Вслушайтесь в советы Circiter...

 
 
 
 Re: Помогите с массивами в c++
Сообщение25.06.2010, 04:24 
Skam64 в сообщении #334009 писал(а):
А правильно это как?


s=0;
x2=x*x;
n=1;
for (int i=0; i < 20; i++)
{
n *= x2/(i+1)/(i+2);
s += n;
}

 
 
 
 Re: Помогите с массивами в c++
Сообщение27.06.2010, 11:55 
Аватара пользователя
Не очень красиво буквой n счетчики обозначать.

 
 
 
 Re: Помогите с массивами в c++
Сообщение27.06.2010, 12:59 
Ну здесь это оправдано мнемоникой "n-ный член последовательности".

 
 
 [ Сообщений: 9 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group