Здравствуйте, я написал программу на С ++ для вычисления чисел Фибоначчи.
По сути, я хочу, чтобы моя программа вычисляла, например, 10 чисел Фибоначчи, а затем вычисляла их дисперсию и стандартное отклонение. На данный момент мне удалось получить программу для вычисления чисел Фибоначчи, но я не знаю, как можно сразу загрузить эти числа для вычисления дисперсии и стандартного отклонения. Поэтому я прошу ввести их и сохранить их в массиве х, а затем я вычисляю дисперсию и стандартное отклонение.
#include <conio.h>
#include <iostream>
#include <windows.h>
#include <math.h>
using namespace std;
int n,i,one=0,two=1,ne;
//one -> first number
//two -> second number
//ne -> next number
float x[100], sum=0, avg, vari=0, vari2, sd;
int main()
{
cout << "Enter how many Fibonacci numbers you want\n" << endl;
cin >> n;
cout << "\nFirst " << n << " Fibonacci numbers are : " << endl;
for ( i=0 ; i<n ; i++ )
{
if ( i<=1 )
ne=i;
else
{
ne=one+two;
one=two;
two=ne;
}
cout << ne << endl;
}
for (i=0; i<n; i++)
{
cout << "Input your Fibonacci numbers ";
cin >> x[i];
sum = sum + x[i];
}
avg = sum/n;
for (i=0; i<n; i++)
{
vari = vari + pow((x[i] - avg),2);
}
vari2 = vari/n;
sd = sqrt(vari2);
cout << "The sum of the numbers: " << sum << endl;
cout << "The average of the numbers: " << avg << endl;
cout << "The variance of the numbers: " << vari2 << endl;
cout << "The standard deviation of the numbers: " << sd << endl;_getch();
}
Это новый код:
Все работает хорошо, кроме дисперсии.
Я не знаю, почему дисперсия рассчитывается неправильно.
#include <conio.h> #include <iostream>
#include <windows.h>
#include <math.h>
using namespace std;
int n,i,one=0,two=1,ne;
//one -> first number
//two -> second number
//ne -> next number
float x[10000], sum=0, avg, vari=0, vari2, sd;
int main()
{
cout << "Enter how many Fibonacci numbers you want\n" << endl;
cin >> n;
cout << "\nFirst " << n << " Fibonacci numbers are : " << endl;
for ( i=0 ; i<n ; i++ )
{
if ( i<=1 )
ne=i;
else
{
ne=one+two;
one=two;
two=ne;
}
cout << ne << endl;
sum = sum + ne;
avg = sum/n;
}for (i=0; i<n; i++)
{
vari = vari + pow((x[i] - avg),2);
}
vari2 = vari/n;
sd = sqrt(vari2);
cout << "The sum of the numbers: " << sum << endl;
cout << "The average of the numbers: " << avg << endl;
cout << "The variance of the numbers: " << vari2 << endl;
cout << "The standard deviation of the numbers: " << sd << endl;_getch();
}
Нет необходимости создавать цикл for для суммы и среднего, их код может быть реализован внутри самого первого цикла:
for ( i=0 ; i<n ; i++ )
{
if ( i<=1 )
ne=i;
else
{
ne=one+two;
one=two;
two=ne;
}
cout << ne << endl;
sum = sum + ne;
avg = sum/n;
Теперь для дисперсии и sd вы можете создать функцию для каждого из них, чтобы вычислять их значения:
double funcvari(double d){
vari = vari + pow((ne - d),2);
vari2 = vari/n;return vari2;
}
double funcsd(double fd){
sd = sqrt(fd);
return sd;
}
Других решений пока нет …