输出错误的数字C ++

时间:2017-11-06 07:32:25

标签: c++ c++11 visual-c++

我写了这段代码,我需要一些帮助!

正如您从下面的图片中看到的那样,我很难弄清楚如何解决这个问题。 我提交了我的代码,结果如下

图片在链接中:

第一张照片我想修复" 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

1 个答案:

答案 0 :(得分:1)

您正在尝试在此处读取单个元素数组:

char filename[]="";

cin>>filename;

这会破坏你的记忆。您需要为文件名字符串分配一些大小。例如:

char filename[256] = "";

将完成最多256个字符长的文件夹的工作。

将它放在一边,char []是一个C构造。你正在使用C ++,所以你也应该用C ++方式做事。而不是简单的数组使用C ++字符串或字符串流。它将使您的工作更轻松。

std::string filename{};
cin >> filename;