In: Computer Science
Complete the program used on the instructions given in the comments:
C++ lang
#include <string>
#include <vector>
#include <iostream>
#include <fstream>
using namespace std;
vector<float>GetTheVector();
void main()
{
vector<int> V;
V = GetTheVector(); //reads some lost numbers from the file “data.txt" and places it in //the Vector V
Vector<int>W = getAverageOfEveryTwo(V);
int printTheNumberOfValues(W) //This should print the number of divisible values by 7 //but not divisible by 3.
PrintIntoFile(W); //This prints the values of vector W into an output file “output.txt”
}
As you see in the main program, there are four functions. The first function is called “GetVector()” that reads a set of integer, place them into the vector V, and returns the vector to the main program.
The second function is called “GetAverageOfEveryTwoNumber() that takes a vector “V” and finds the average of every two consecutive numbers, place the values into another vector called “W” and returns it to the main program. For example if the Vector is:
10 20 30 40 50 60 70 80 90 100
Then vector “W” should be:
15 25 35 45 55 65 75 85 95
Because (10+20) divided by 2 is 15, and so on.
The next function takes the vector “W” and count how many of the values are divisible by “7” but not divisible by “3”
Finally the last function prints the vector “W” into an output file called “output.txt”
Code
#include <string>
#include <vector>
#include <iostream>
#include <fstream>
using namespace std;
ifstream fp;
ofstream ofp;
vector<int> GetTheVector()
{
string line;
vector<int> V(0);
// Reads the vector from data.txt file
while (getline(fp, line, ' '))
{
V.push_back(stoi(line)); //
Converting string number into number
}
return V;
}
vector<int> getAverageOfEveryTwo(vector<int>
V)
{
vector<int> W(0);
vector<int>::iterator it;
for (it = V.begin(); it+1 != V.end();
it++) // Calculates average of each
pair
{
int temp = (*it + *(it + 1)) /
2;
W.push_back(temp);
}
return W;
}
int printTheNumberOfValues(vector<int> W)
{
int count = 0;
vector<int>::iterator it;
for (it = W.begin(); it + 1 != W.end();
it++) // Calculates count of numbers
which are divisible by 7 but not 3
{
if ((*it % 7 == 0) && (*it
% 3 != 0))
count++;
}
return count;
}
void PrintIntoFile(vector<int> W)
{
ofp.open("output.txt");
if (ofp.is_open())
{
vector<int>::iterator it =
W.begin();
while (it != W.end())
{
ofp<<
to_string(*it) << " ";
it++;
}
}
else
{
cout << "Could not open the
output file. Error!" << endl;
}
ofp.close();
}
int main()
{
vector<int> V, W;
int count;
string line;
fp.open("data.txt");
if (fp.is_open())
{
V = GetTheVector();
//reads some lost numbers from the file
“data.txt" and places it in //the Vector V
W = getAverageOfEveryTwo(V);
count =
printTheNumberOfValues(W); //This should print the
number of divisible values by 7 //but not divisible by 3.'
printf("Count of values divisible
by 7 but not 3: %d", count);
PrintIntoFile(W);
//This prints the values of vector W into an
output file “output.txt”
}
else
{
cout << "Could not open the
file. Error!" << endl;
}
return 0;
}
Test Output