I'm trying to take some information from a file and input it into an array so that it can be output on the screen, but I can't get this to work. Here's the kicker though....the file has to allow 100 test scores, but must end when it hits -999....any ideas?

File

53
55
55
65
78
78
78
80
85
85
92
92
92
95
95
95
95
-999
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;

void main()
{
	ifstream scores;
	
	int i, Quiz[100];
	string file;


	cout << "Enter name of file" << endl;
	cin >> file; file += ".txt";

	scores.open(file.c_str());

	if(scores)
	{
		for (i=0;i < 101 ;i++)
			if (Quiz[i] != -999)
			{
				cout << Quiz[i] << endl;
			}
			else
				cout << "Error";
	}
}

>any ideas?
Maybe break; the input loop on the sentinel value?

how would I do this? I've tried:

if (i = -999)
if (i=0;i != -999; I++ )

what should I do?

I'm imagining something kinda complicated:

for ( i = 0; i < 100; ++i )
      {
         scores >> Quiz[i]; // Read value from file.
         if ( Quiz[i] == -999 )
         {
            break;
         }
      }

[edit]Actually, I'd probably use a temporary for receiving the file input so I could avoid putting the sentinel value into the array.

Edited 7 Years Ago by Dave Sinkula: n/a

I'm imagining something kinda complicated:

for ( i = 0;i < 100; ++i )
      {
         scores >> Quiz[i]; // Read value from file.
         if ( Quiz[i] == -999 )
         {
            break;
         }
      }

ok.... I was tinkering with this, but it was printing out the -999, which (of course) I don't want:

if(scores)
	{
		for (i=0;i < 101 ;i++)
			if (scores >> Quiz[i])
			{
				cout << Quiz[i] << endl;
			}
			else if (i = -999)
			{
				break;
			}
	}

Actually...when I try your code, it prints out the -999 value as well.....I'm not sure how to correct this....

Edited 7 Years Ago by PDB1982: n/a

Actually...when I try your code, it prints out the -999 value as well.....I'm not sure how to correct this....

Actually my code doesn't. Mine is not put together like yours (perhaps you didn't notice that I don't print on input, and I do the comparison correctly). I'm trying to see what you can manage for yourself. The edit of my last post may be of interest.

Edited 7 Years Ago by Dave Sinkula: n/a

Actually my code doesn't. Mine is not put together like yours (perhaps you didn't notice that I don't print on input, and I do the comparison correctly). I'm trying to see what you can manage for yourself. The edit of my last post may be of interest.

I'm at a loss...I'm trying to figure it out, but I can't.....

I'm at a loss...I'm trying to figure it out, but I can't.....

Why not try posting your latest effort?

Perhaps think about what you had written in your last post. For example, if i is the loop counter that goes from 0 to 100 (which would be outside of array bounds), when will it equal -999? Well, if input failed in order to get you to the else, and if you had used the comparison operator instead of assignment.

[edit]Or perhaps consider what might happen if you indeed break out of the loop when -999 is encountered? What would i be? 100?

Don't just throw code at it, think about things a bit.

Edited 7 Years Ago by Dave Sinkula: n/a

This article has been dead for over six months. Start a new discussion instead.