实验:样本函数实验(统计学实验)

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

实验:样本函数实验(统计学实验)

一、实验要求

输入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)

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阡陌笙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值