I'm working on an assignment that requires me to do the following:

"A file contains 6 numbers per line and contains several records. Another file contains 3 numbers per line and several records. Write a program to input each of the numbers, find the highest number, the lowest number, their total and average. Output the numbers, the highest, lowest, total and average to another file."

Output.txt needs to look like this for each numbers per line:

1 2 3 4 5 6
Min: 1
Max: 6
Total: 21
Avg: 3

The problem I'm having with my code is instructing the computer to read the numbers per line, find the desired math results, output it the aforementioned format, and then repeat the algorithm in the next set of numbers. This is my code so far:

#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

int main ()
    //Declaring variables
    ifstream inFile;
    ofstream outFile;
    int NumPerLine, num, count=0; 
    int sum=0, min=0, max=0, Total=0, Avg=0;
    int row=0, col=0, x, y;

    //Opening files

    //Code data manipulation

    cout << "Processing data."
         << endl;

    //Read/Write Integer 
    inFile  >> NumPerLine;
    outFile << NumPerLine
            << endl;

    //While loop reads data  
    while (!inFile.eof())
        inFile  >> num;
        outFile << num << "\t";
        sum = sum + num;
    }//Needs to be solved: how do I run math processes(max,min,avg,total)w/ numbers
     //at end of line and THEN continue reading and repeating math processes for next line of numbers?

     /*Math processes 

     //Determining Average
       Avg = sum / count;
     //Determining Sum
       sum = num + sum;
     //Determining Max
     //Determining Min

     //End of code data manip

    //Close files

    return 0;

Please help! Thank you.

Edited by greencode

4 Years
Discussion Span
Last Post by WaltP

You need to first read the entire line as a single string, and then read off the individual numbers in it.

Because, when you read numbers from the file, it will ignore any non-number character (including the new-line character) that it encounters. So, there is no way to tell when the line ends. So, you have to first use another method to read the entire line, then read off the numbers from that.

To read one line from the file, you can use a string and the getline function, as so:

#include <string>
// .. same as in your code...

int main() {
  // ... 

  string oneLine;
  getline(inFile, oneLine);
  cout << "The first line is:" << endl;
  cout << oneLine << endl;


Once you have an entire line read from the file, you have to read the individual numbers. To read numbers from a string, you can use a class called stringstream (in header <sstream>) which acts the same as a file-stream class. So, you can do this:

#include <sstream>
// .. same as before ..

int main() {

  // after reading a line into 'oneLine':
  stringstream inStrStream(oneLine);  // create string-stream from the line-string.
  cout << "The individual numbers are:" << endl;
  while(!inStrStream.eof()) {
    inStrStream >> num;
    cout << num << endl;

  // ..

I think you can figure out how to use the above codes to do your assignment.


I'm sure stringstreams are not available for you, so you probably need to use a more mundane approach.

But it depends entirely on if you use C++ strings or C-strings.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.