zoukankan      html  css  js  c++  java
  • 个人项目-数组求和(语言:C++)

    prog1详细要求:

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

    【我的prog1的实现过程和问题解决】.

    prog1中运用到的数组的思路其实不难,但是刚开始我就卡在了怎么从excel中提取数据到c++中数组中去这个问题上,看到了群里的讨论之后,我试着把数据用txt打开,然后在翻了c++的书之后,我又想到了头文件的问题,头文件#include<fstream>(包含文件流,这样就可以使用与文件相关的一些函数,像open(),close()等---摘自百度),但是试验了之后发现答案一直是-80,不管数据怎么变都没用,意识到可能是for语句里面的错,在翻了c++书以后,找到了>>(流提取运算符),添加运算符到for循环语句之后,才解决了问题。

    源程序:

    #include<iostream>
    #include<fstream>
    using namespace std;

    int main()
    {
    int sum=0,i,a[100];//定义数组和为0,存放数组
    ifstream f("d:\数据来源.txt");
    for(i=0;f>>a[i],i<100;i++)//流提取云算符
    {sum+=a[i];}
    cout<<"数组求和为:"<<sum<<endl;
    return sum;
    }

    源程序截图:

    结果如下:


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

    【我的prog2的实现过程和问题解决】.

    在解决了读取数据这个问题和prog1之后,prog2只是改变了任意数组长度并且要求用函数就感觉好做的多,申请整形变量空间,赋初值为l,把prog1中的for语句改动之后弄到ArraySum函数里面去,之后调用。数据的问题我重新复制了所有A列的数据新建了一个txt文档。

    源程序:

    #include<iostream>
    #include<fstream>
    using namespace std;

    ArraySum(int l)
    {
    int *a,sum=0,i;
    a=new int[l];
    ifstream f("d:\数据来源1.txt");
    for(i=0;f>>a[i],i<l;i++)//流提取云算符
    {sum+=a[i];}
    cout<<"数组求和为:"<<sum<<endl;
    return sum;
    }
    void main()
    {
    int l=0;
    cout<<"输入任意数组长度为:";
    cin>>l;
    ArraySum(l);
    }

    源程序截图:

    三组实验数据,数组长度依次为:5、100和200


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

    【我的prog3的实现过程和问题解决】.

    看到了prog3之后,prog1和prog2中我已经从文件中A列读取数据,prog2中也实现了任意长度数组求和,这样要求就变成了指定范围元素相加,在main中定义了最大值最小值,并在ArraySum函数中也增加了min和max。

    源程序:

    #include<iostream>
    #include<fstream>
    using namespace std;

    ArraySum(int l,int min,int max)
    {
    int *a,sum=0,i;
    a=new int[l];
    ifstream f("d:\数据来源1.txt");
    for(i=0;f>>a[i],i<l;i++)
    {if(a[i]>=min&&max>=a[i])
    sum+=a[i];
    }
    cout<<"数组求和为:"<<sum<<endl;
    }

    void main()
    {
    double min,max;
    cout<<"输入范围最小值:";
    cin>>min;
    cout<<"输入范围最大值:";
    cin>>max;
    int l=0;
    cout<<"输入数组长度为:";
    cin>>l;
    ArraySum(l,min,max);
    }

    源程序截图:

    结果如下:

    【最后我的总体体会】

    这三个程序总的来说是一个循序渐进的编程过程,要求可以说是在上一个的基础上继续发展。我也在其中遇到了很多问题,具体的感触已经写在了每个具体程序的介绍中。由于c++已经是大一的内容了,好多具体知识还需要翻书了解,时间花得特别多。

    我的github链接:https://github.com/liuyutianlyt/SUM.md

  • 相关阅读:
    hdu 1164 Eddy's research I
    hdu 3794 Magic Coupon
    hdu 1460 完数
    hdu 1201 18岁生日
    求一组整数中所有素数之和
    备忘录
    c判断括弧是否匹配
    N!大整数阶乘问题
    计算一个人从出生到现在活了多少天
    java web.xml配置详解(转)
  • 原文地址:https://www.cnblogs.com/liuyutian/p/5248466.html
Copyright © 2011-2022 走看看