我写了这段代码,我需要一些帮助!
正如您从下面的图片中看到的那样,我很难弄清楚如何解决这个问题。 我提交了我的代码,结果如下
图片在链接中:
第一张照片我想修复" 12"问题。
![PIC1](https://ibb.co/femboG
对于第二张图片我想修复它,好像没有有效数字输出"平均值无法计算"代替
![PIC2](https://ibb.co/bJ0moG
最后一张图片我需要修复-0.00问题
![PIC3](https://ibb.co/nE7oiG
多数人
编译命令:
g ++ lesson7part2.cpp -Wall -Wextra -Wuninitialized -pedantic-errors -Wconversion -o a.out
#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;
int main() {
ofstream outFile;
string outFileName = "invalid-numbers.txt";
char filename[]="";
cin>>filename;
ifstream in(filename);
if (!in.good())
{
cout<<"File " << "\""<< filename <<"\"" << " could not be opened" <<endl;
exit(0);
}
outFile.open(outFileName.c_str()); //open file
if (!outFile) { //check if u opened file properly or not
cout << "Error opening " << outFileName << " " << endl;
return 1;
}
double inNumber = 0;
double valTotal = 0;
double countValNum = 0;
double count =0;
while (in >> inNumber) {
if (inNumber >= 0 && inNumber <= 110) {
valTotal += inNumber;
countValNum++;
} else {
outFile << inNumber << fixed << setprecision(2) << endl;
}
count++;
}
cout << "Reading from file " << "\""<< filename <<"\"" << endl;
cout << "Total values: " << count << endl;
cout << "Invalid values: " << (count - countValNum) << endl;
cout << "Valid values: " << countValNum << endl;
cout << "Average of valid values: " << fixed << setprecision(2) << (valTotal / countValNum) << endl;
outFile.close();
in.close();
return 0;
}
下面:
因此,正如你在图片中看到的那样,我需要正确地将数字修正为sisplay而不确定如何自己解决这个问题。
。 。 。 。 这是如何看待它看起来的例子
以下是工作程序的示例:
假设从cin读入的文件名是:
input.txt中
并且input.txt包含:
-12
0
98.5
100
105.5
93.5
88
75
-3
111
89
-12
您的程序将输出以下内容:
从文件&#34; input.txt&#34;
中读取总价值:12
无效值:4
有效值:8
有效值的平均值:81.19
写入文件invalid-numbers.txt(如果它们小于0)的内容是:
-12
-3
111
-12
答案 0 :(得分:1)
您正在尝试在此处读取单个元素数组:
char filename[]="";
cin>>filename;
这会破坏你的记忆。您需要为文件名字符串分配一些大小。例如:
char filename[256] = "";
将完成最多256个字符长的文件夹的工作。
将它放在一边,char []是一个C构造。你正在使用C ++,所以你也应该用C ++方式做事。而不是简单的数组使用C ++字符串或字符串流。它将使您的工作更轻松。
std::string filename{};
cin >> filename;