输入任意多个整数, 把这些数据保存到文件data.txt中.
如果在输入的过程中, 输入错误, 则提示用户重新输入.
直到用户输入结束(按ctrl + z)
[每行最多保存10个整数]
代码实现
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
int data;
int n = 0;
ofstream outFile;
outFile.open("data.txt");
if (!outFile.is_open()) {
cout << "文件打开失败" << endl;
}
while (1)
{
cout << "请输入数据【Ctrl+Z结束输入】" << endl;
cin >> data;
if (cin.eof()) {
break;
}
//判断是否输入正确的数据
while (cin.fail())
{
cin.clear(); //清楚错误标志
cin.ignore(std::numeric_limits<streamsize>::max(), '\n'); //清楚缓冲区中的所有数据
//std::numeric_limits<streamsize>::max() io支持输入的最大值
cout << "输入内容有误,请重新输入" << endl;
cin >> data;
}
n++;
outFile << data << "\t";
if (n%10 == 0) {
outFile << endl;
}
}
outFile.close();
return 0;
}
从上个练习中的num.txt文件读取各个整数, 打印出最大值和最小值, 以及平均值
代码实现
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
int main() {
int data;
int min = 0;
int max = 0;
int num = 0;
int n = 0;
vector<int> datas;
ifstream inFile;
inFile.open("data.txt");
if (!inFile.is_open()) {
cout << "文件打开失败" << endl;
}
//先读一条数据,给min等赋值
inFile >> data;
min = data;
max = data;
num += data;
n++;
while (1)
{
inFile >> data;
if (inFile.eof()) {
break;
}
if (min > data) {
min = data;
}else if(max < data){
max = data;
}
num += data;
n++;
// datas.push_back(data);
}
/*
for (auto i = datas.begin(); i != datas.end(); i++)
{
min = datas[0];
if (min > *i) {
min = *i;
}
if(max < *i){
max = *i;
}
num += *i;
avg = num / datas.size();
} */
cout << "最小值:" << min << endl;
cout << "最大值:" << max << endl;
cout << "平均值:" << num/n << endl;
cout << " " << num << endl;
cout << " " << n << endl;
inFile.close();
return 0;
}