• 作业2


    数组求和

    目标

    • 使用开发工具
    • 使用源代码管理工具

    要求

    • 对数组指定范围内的元素求和。PS:数组存放的是实数。
    • 开发语言:C++
    • 开发工具:Visual C++

    源程序及结果如下:

    1.第一版本程序Prog1:
    + 给定一个数组,实现数组元素求和;,具体要求:实现对一维数组(a[100])的所有元素相加运算。
    + 数据准备:a)数组长度:100;b)数组数据来源:实验数据A列:1~100,CSV 格式则填充 前100个数据.

    源程序:

    #include<iostream>

    #include<fstream>

    using namespace std;

    int main()

    {

             int a[100];//定义一个数组

             int sum=0;//总和变量初始化

             ifstream Data("D:\data.txt");

             if(!Data)

             {cout<<"不能打开文件";exit(1);}//判断文件是否能被打开

             for(int i=0;Data>>a[i],i<100;i++)

             {

                       sum+=a[i];//做加法

             }

             cout<<sum;

             return 0;

    }

    实验结果:

      

    这是后面几个实验的基础,运用了fstream库函数,我先把文件里的A组导出到D盘保存成一个txt文件,方便ifstream导出。再逐个求和。

    2.第二版本程序Prog2
    + 改写成一个函数(函数名称为ArraySum),能实现任意长度数组所有元素求和;
    + 数据准备:a)数组长度:任意; b)数组数据来源:实验数据A列.

     源程序如下:

    #include<iostream>

    #include<fstream>

    using namespace std;

    void ArraySum(int n)

    {

             int *a=new int[n];

             int sum=0;

            

             if(a==0)

             {

                       cout<<"没有申请到动态内存";exit(3);}

             ifstream Data("D:\data.txt");

             if(!Data)

             {

                       cout<<"不能打开文件";exit(1);

             }

            

             for(int i=0;Data>>a[i],i<n;i++)

             {       

                       sum+=a[i];

             }

             cout<<sum;

             delete []a;

    }

    int main()

    {

             int n;

             cout<<"请输入数组长度:";

             cin>>n;

             cout<<"所求和为:";

             ArraySum(n);

             return 0;

    }

    实验结果:

    在prog1的基础上,在主函数中输入数组长度,函数ArraySum中以参数n代替,在主函数中调用函数即可。这里因为n是任意值,所以要为其申请动态内存。

    3.第三版本程序Prog3
    + 将Prog2改写成能从文件中读取数据,实现任意长度数组,指定范围内元素相加。
    + 数据准备:a)数组长度:任意; b)数组数据来源:从文件中读取.

    源程序如下:

    #include<iostream>

    #include<fstream>

    using namespace std;

    void ArraySum(int n,int min,int max)

    {

             int *a=new int[n];

             int sum=0;

            

             if(a==0)

             {

                       cout<<"没有申请到动态内存";exit(3);}

             ifstream Data("D:\data.txt");

             if(!Data)

             {

                       cout<<"不能打开文件";exit(1);

             }

            

             for(int i=0;Data>>a[i],i<n;i++)

             {       

                       if(min<a[i]&&a[i]<max)

                       sum+=a[i];

             }

             cout<<sum;

             delete []a;

    }

    int main()

    {

             int n,min,max;

             cout<<"请依次输入数组长度,最小值和最大值:";

             cin>>n>>min>>max;

             cout<<"所求和为:";

             ArraySum(n,min,max);

             return 0;

    }

    实验结果

    在prog2的基础上,给Data取值时加了范围,在函数ArraySum中实现,再到主函数中输入范围以及数组长度即可。

    遇到的问题

    未注意到无返回值函数不用return,调试时发现错误改正过来了。

    https://github.com/leaves6/project2

  • 相关阅读:
    【网易官方】极客战记(codecombat)攻略-森林-加农炮之舞forest-cannon-dancing
    【网易官方】极客战记(codecombat)攻略-森林-森林慢跑forest-jogging
    https://developer.android.com/codelabs/java-to-kotlin
    今日英语
    架构师技能图谱
    java接口防重提交如何处理
    看看人家那后端API接口写得,那叫一个优雅!
    MySQL不推荐使用uuid或者雪花id作为主键
    “12306”是如何支撑百万QPS的?
    阿里巴巴为什么能抗住90秒100亿?看完这篇你就明白了!
  • 原文地址:https://www.cnblogs.com/yeyuexin/p/5248364.html
Copyright © 2020-2023  润新知