我的作业陈述如下:
一家公司的三名员工正在加薪。您将获得一个文件
Ch3_Ex7Data.txt
,其中包含以下数据:Miller Andrew 65789.87 5
Green Sheila 75892.56 6
Sethi Amit 74900.50 6.1每个输入行包含员工的姓氏,名字,当前薪水和工资增长百分比。
例如,在第一个输入行中,员工的姓氏为Miller
,第一个名称为Andrew
,当前工资为65789.87
,工资增长为5 %
。
编写一个程序,从指定文件中读取数据并将输出存储在文件
Ch3_Ex7Output.dat
中。对于每个员工,必须以下列形式输出数据:
firstName lastName updatedSalary
将十进制数的输出格式化为两位小数。
我的代码如下。
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
//Declaring the variables
string firstName;
string lastName;
double payIncrease;
double pay;
ifstream inFile;
ofstream outFile;
inFile.open("C:\\Users\\Megan\\Ch3_Ex7Data.txt"); //opens the input file
outFile.open("C:\\Users\\Megan\\Ch3_Ex7Output.dat"); //opens a output file
outFile << fixed << showpoint;
outFile << setprecision(2); // Output file only having two decimal places
cout << "Processing Data....." endl; //program message
while (!inFile.eof() //loop
inFile >> lastName >> firstName >> pay >> payIncrease;
pay = pay*(pay*payIncrease);
outFile << firstName << " " << lastName << " " << pay << "/n";
inFile.close();
outFile.close();
return 0;
}
出于某种原因,我似乎无法获取代码来打开我现有的.txt
文件,阅读它然后将其翻译成另一个文件。有没有人认为这有什么问题可以帮助我?
答案 0 :(得分:1)
您的代码存在许多问题。
最明显的两个阻止程序编译:
cout << "Processing Data....." endl; //program message
应该是:
cout << "Processing Data....." << endl; //program message
和while (!inFile.eof() //loop
至少应为while (!inFile.eof() )//loop
那不是全部:
while (!inFile.eof())
是一个反成语:你测试文件结尾,然后读并进行处理,即使发生了错误或文件结束。您必须在>>之后测试。
正如您在评论中所说的那样,{ }
只有while
重复pay = pay*(1 + payIncrease/100.);
之后的第一行,这是不你想要的。
添加百分比增长的正确公式是pay = pay+(pay*payIncrease/100.);
至少'/n'
添加'\n'
作为行尾是完全错误的。该字符为endl
(请注意后退斜杠),无论如何,您应始终在C ++中编写for (;;) { //loop
inFile >> lastName >> firstName >> pay >> payIncrease;
if (! inFile) break; // exit on eof or error
pay = pay*(1 + payIncrease/100.);
outFile << firstName << " " << lastName << " " << pay << endl;
}
。
完成所有修复后,循环变为:
Andrew Miller 69079.36
Sheila Green 80446.11
Amit Sethi 79469.43
,输出为:
rspec_options = {
cmd: "bundle exec rspec",
run_all: {
cmd: "bundle exec parallel_rspec -o '",
cmd_additional_args: "'"
}
}
guard :rspec, rspec_options do
# (...)
但是你想要学习好的实践,你也应该:
答案 1 :(得分:0)
这是我的解决方法
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int main() {
// Write your main here
//Declarations
string FirstName;
string LastName;
double Pay;
double Increase;
double UpdatedSalery;
//File object and open txt and dat files per instructions and use user input for the txt input file
ifstream FileIn;
string FileName;
cout << "enter a file name: ";
cin >> FileName;
FileIn.open(FileName);
ofstream FileOut("Ch3_Ex5Output.dat");
FileOut << setprecision(8);
while(FileIn >> LastName >> FirstName >> Pay >> Increase){
UpdatedSalery = ((Pay*(Increase/100))+Pay);
FileOut << " " << FirstName << " " << LastName << " " << UpdatedSalery << endl;
}
FileIn.close();
FileOut.close();
return 0;
}