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