Re: College Lesson Trouble With Count/Sentinel Control Loops
Originally Posted by GCDEF
I hadn't read the original assignment about performing the tasks separately, but he shows you what you need to do. You will need multiple loops closing and reopening the file between them.
I've answered your question about repeating the last number several times now. You were on the right track earlier when you read the file before your loop, but you need to put the output before the input in the loop.
Ok I got it =P
Code:
total=0;
counter=0;
filein>>num;
while(filein)
{
fileout<<num<<" ";
filein>>num;
total=total+num;
counter++;
}
average = total/counter;
fileout<<fixed<<setprecision(3)<<endl<<"The Average from the input file is: "<<average<<endl;
Chapter 8 assignment is where we do multiple loops using void functions... So I guess I need to do a separate print out for each one.
Re: College Lesson Trouble With Count/Sentinel Control Loops
Looks like all the steps, a, b, c, d... he asks you to "reread" the file, which would require separate loops and closing and opening the file between each loop.
Re: College Lesson Trouble With Count/Sentinel Control Loops
Whoa... look at me go lol Thanks!
Code:
#include <iostream>
#include <cmath>
#include <iomanip>
#include <fstream>
using namespace std;
void main()
{
int num, fnum, lnum, sum;
float average, total, counter;
char inchar;
ofstream fileout;
ifstream filein;
fileout.open("E:\\Resource Files\\answers.txt");
filein.open("E:\\Resource Files\\datafile2.txt");
total=0;
counter=0;
filein>>num;
while(filein)
{
fileout<<num<<" ";
filein>>num;
total=total+num;
counter++;
}
average = total/counter;
fileout<<fixed<<setprecision(3)<<endl<<"The Average from the input file is: "<<average<<endl;
filein.close();
filein.clear();
filein.open("E:\\Resource Files\\datafile2.txt");
total=0;
counter=1;
while(counter <=12)
{
filein>>num;
total=total+num;
counter++;
}
average=total/12;
fileout<<"The average of the first 12 integers of the input file is: "<<average<<endl;
}
Code:
55 67 458 23 81 33 782 375 528 405 324 950 46 14 864 551 38 167 518 630
The Average from the input file is: 374.200
The average of the first 12 integers of the input file is: 340.083
Re: College Lesson Trouble With Count/Sentinel Control Loops
Remember elementary school division? 5 divided by 3 = 1 remainder 2, for example. The modulo operator gives you the remainder, so 5 % 3 would return 2. If it equals zero, the numerator is evenly divisible by the denominator.
Re: College Lesson Trouble With Count/Sentinel Control Loops
Originally Posted by GCDEF
Remember elementary school division? 5 divided by 3 = 1 remainder 2, for example. The modulo operator gives you the remainder, so 5 % 3 would return 2. If it equals zero, the numerator is evenly divisible by the denominator.
Ok, so the if statements expression is only true if the remainder of the num%3 equals 0. So if there is no remainder than it is a true statement.
Re: College Lesson Trouble With Count/Sentinel Control Loops
Pretty sure I got the code right, but I am coming up with a different answer than what I was expecting
Code:
55 67 458 23 81 33 782 375 528 405 324 950 46 14 864 551 38 167 518 630
The Average from the input file is: 374.200
The average of the first 12 integers of the input file is: 340.083
The sum of every third number is: 3870.000
Code:
filein.close();
filein.clear();
filein.open("E:\\Resource Files\\datafile2.txt");
total=0;
while(filein)
{
filein>>num;
if(num%3==0)
total=total+num;
}
fileout<<"The sum of every third number is: "<<total<<endl;
}
From adding every 3rd number I am getting 3000 as my answer.
Re: College Lesson Trouble With Count/Sentinel Control Loops
Originally Posted by commiedic
Ok, so the if statements expression is only true if the remainder of the num%3 equals 0. So if there is no remainder than it is a true statement.
Yes. Typically C and C++ programmers start counters at 0, so if your loop included if(counter % 3) == 0) then every third time through the loop, beginning with the first time, would be true.
Re: College Lesson Trouble With Count/Sentinel Control Loops
Originally Posted by commiedic
Pretty sure I got the code right, but I am coming up with a different answer than what I was expecting
Code:
55 67 458 23 81 33 782 375 528 405 324 950 46 14 864 551 38 167 518 630
The Average from the input file is: 374.200
The average of the first 12 integers of the input file is: 340.083
The sum of every third number is: 3870.000
Code:
filein.close();
filein.clear();
filein.open("E:\\Resource Files\\datafile2.txt");
total=0;
while(filein)
{
filein>>num;
if(num%3==0)
total=total+num;
}
fileout<<"The sum of every third number is: "<<total<<endl;
}
From adding every 3rd number I am getting 3000 as my answer.
You really need to think about what you're doing. num could be anything. num isn't the value you want to be testing here.
Re: College Lesson Trouble With Count/Sentinel Control Loops
Originally Posted by commiedic
Ok I got it =P
Code:
total=0;
counter=0;
filein>>num;
while(filein)
{
fileout<<num<<" ";
filein>>num;
total=total+num;
counter++;
}
average = total/counter;
fileout<<fixed<<setprecision(3)<<endl<<"The Average from the input file is: "<<average<<endl;
Chapter 8 assignment is where we do multiple loops using void functions... So I guess I need to do a separate print out for each one.
Bookmarks