实验:样本函数实验(统计学实验)
一、实验要求
输入2-100的样本,要求输入格式为小数,样本数为n并确定具体数值,输出不超过每个数的最大素数,并由此计算一阶矩、二阶矩及三阶矩,输入两组数据并验证。
二、实验代码
#include<iostream>
#include<string> //字符串类型
#include<sstream> //输入、输出和输入输出操作
#include<conio.h>
#include<cmath>
#define n 5 //定义个常量n来确定数据个数
using namespace std;
bool check(double a) //定义一个bool方法,检查数据是不是小数,是则返回true,否则返回flase
{
string s;
stringstream ss;
ss << a;
ss >> s;
int m = s.find(".", 0); //从字符串的第一个位置开始寻找有没有带小数点的数
if (m == string::npos)
{
return false;
}
else
return true;
}
int judge(double a) //定义一个方法来计算每一个数据的最大素数
{
int max = 0;
int j = 0;
int m = int(a);
for (int i = m; i > 0; i--)
{
max = i; //记录最大素数
for (j = 2; j < max; j++)
{
if (max % j == 0)
{
break;
}
}
if (j == max)
{
break;
}
}
return max;
}
int MI(int b, int a)
{
int i;
int y = 1;
for (i = 1;i <= a;i++)
{
y = y * b;
}
return y;
}
float
origin(int*b, int a) //原点矩
{
int j, sum = 0;
float C;
for (j = 0;j < n;j++)
{
sum = sum + MI(b[j], a);
}
C = (float)sum / n;
return C;
}
int main()
{
double a[n];
int flag = 0;
do
{
cout << "请输入" << n<< "个2-100的小数,计算每个数的最大素数:" << endl;
for (int k = 0; k < n; k++)
{
cin >> a[k];
if (a[k] < 2) //判断是不是小于2
{
flag = 1;
cout << a[k] <<"小于2,请重新输入:" << endl;
break;//终止录入数据
}
if (a[k] > 100) //判断是不是大于100
{
flag = 1;
cout << a[k] <<"大于100,请重新输入:" << endl;
break;//终止录入数据
}
else if (check(a[k]) != true) //判断是不是小数,任意一个不是就报错
{
flag = 1;
cout << a[k] <<"不是小数,请重新输入" << endl;
break;//终止录入数据
}
else
{
flag = 0;
}
}
}
while (flag == 1); //先进入循环做执行语句,每做一次执行语句就对判断语句进行一次判断,直到不满足判断语句的条件则跳出循环。
int b[n];
//定义一个新的数组存放,存放每一个数据的最大素数
for (int j = 0; j < n; j++)
{
b[j] = judge(a[j]);
cout << a[j] << "的最大素数为:" <<b[j] << endl;
}
cout << "一阶原点矩为" <<origin(b, 1);
cout << "二阶原点矩为" <<origin(b, 2);
cout << "三阶原点矩为" <<origin(b, 3);
}
三、实验验证
(1)

(2)

本文介绍了一次统计学实验,实验中要求输入2-100之间的样本,样本数自定义,输出每个数的最大素数,并计算一阶、二阶和三阶矩。实验通过C++编程实现,并提供了两组数据进行验证。
1200

被折叠的 条评论
为什么被折叠?



