3 Replies - 495 Views - Last Post: 06 April 2013 - 07:10 PM Rate Topic: -----

#1 vidkid  Icon User is offline

  • New D.I.C Head

Reputation: 1
  • View blog
  • Posts: 9
  • Joined: 06-April 13

Need Help With A Program

Posted 06 April 2013 - 06:13 PM

Hello All,

I am having some trouble making this program work the way I want it to. I am supposed to calculate the values inside a text file and put them to an an output text file. The program is reading the file just fine, the only problem is if any of the values are less than or equal to 0, I want the program to output "Invalid Data". Instead, the program continues to read the data that is less than 0. I am wondering if anyone would be so kind as to tell me what I am doing wrong with my code. Please help, I'm such a rookie and I could definitely use some saving.

Thanks,

VidKid

#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int main()

{
	float amt1;
	float amt2;
	float amt3;
	float amt4;
	float startMiles;
	float endMiles;
	float mpg;
	ifstream inMPG;
	ofstream outMPG;

	inMPG.open("inmpg.txt");
	if(inMPG.fail())
	{
		cout<<"can't find inmpg.txt"<<endl;
		return 0;
	}

	cout<<"Reading from file"<<endl;
	inMPG>>amt1>>amt2>>amt3>>amt4>>startMiles>>endMiles;

	
	outMPG.open("outmpg.txt");
	if(outMPG.fail())
	{
		cout<<"cant find outmpg.txt"<<endl;
		return 0;
	}
	
	while(!inMPG.eof())
	{ 
		if (amt1 > 0 || amt2 > 0 || amt3 > 0 || amt4 > 0 || startMiles > 0 || endMiles > 0)
		{
		mpg = (endMiles - startMiles)/(amt1+amt2+amt3+amt4);

		cout<<"wrote to file: outmpg.txt"<<endl;
		cout<<"For the gallon amounts: "<<amt1<<" "<<amt2<<" "<<amt3<<" "<<amt4<< " "<<endl;
		cout<<"and a starting mileage of "<<startMiles<<endl;
		cout<<"and an ending mileage of "<<endMiles<<endl;
		cout<<"the mileage per gallon is "<<mpg<<endl;
		
		cout<<"\n Reading the next set of data"<<endl;
		inMPG>>amt1>>amt2>>amt3>>amt4>>startMiles>>endMiles;
		}
		else
		{
			cout<<"Invalid Data"<<endl;
		}
			
	}
	return 0;
}



Is This A Good Question/Topic? 0
  • +

Replies To: Need Help With A Program

#2 andrewsw  Icon User is online

  • Fire giant boob nipple gun!
  • member icon

Reputation: 3223
  • View blog
  • Posts: 10,812
  • Joined: 12-December 12

Re: Need Help With A Program

Posted 06 April 2013 - 06:28 PM

If you want it to say "Invalid Data" if ANY of the values are less than zero then you have to change your ORs to ANDs:

if (amt1 > 0 || amt2 > 0 || amt3 > 0 || amt4 > 0 || startMiles > 0 || endMiles > 0)

Was This Post Helpful? 0
  • +
  • -

#3 vidkid  Icon User is offline

  • New D.I.C Head

Reputation: 1
  • View blog
  • Posts: 9
  • Joined: 06-April 13

Re: Need Help With A Program

Posted 06 April 2013 - 06:46 PM

Okay, I changed the or's to and's, but the program still outputs the values that are less than 0. I attached a photo of it here.


	while(!inMPG.eof())
	{ 
		mpg = (endMiles - startMiles)/(amt1+amt2+amt3+amt4);

		cout<<"wrote to file: outmpg.txt"<<endl;
		cout<<"For the gallon amounts: "<<amt1<<" "<<amt2<<" "<<amt3<<" "<<amt4<< " "<<endl;
		cout<<"and a starting mileage of "<<startMiles<<endl;
		cout<<"and an ending mileage of "<<endMiles<<endl;
		cout<<"the mileage per gallon is "<<mpg<<endl;
		
		
		if (amt1 <= 0 && amt2 <= 0 && amt3 <= 0 && amt4 <= 0 && startMiles <= 0 && endMiles <= 0)
		{
			cout<<"Invalid Data"<<endl;
			return 0;
		}

		cout<<"\n Reading the next set of data"<<endl;
		inMPG>>amt1>>amt2>>amt3>>amt4>>startMiles>>endMiles;
		
		
	}
	return 0;
}

Attached image(s)

  • Attached Image

Was This Post Helpful? 0
  • +
  • -

#4 vidkid  Icon User is offline

  • New D.I.C Head

Reputation: 1
  • View blog
  • Posts: 9
  • Joined: 06-April 13

Re: Need Help With A Program

Posted 06 April 2013 - 07:10 PM

Nevermind, I believe I have found what I was doing wrong. Thank you for your help, much appreciated!
Was This Post Helpful? 0
  • +
  • -

Page 1 of 1