텍스트 파일에서 읽는 기본 계산기를 만들어야합니다.파일 입력 C++ 행이 변경되는 경우
2
add 5 3
sub_prev 1
1
mul 4 5
2 개의 조작의 수를 나타냅니다, 분명히 수단 (5) + 6을 추가하고, 계산기는 이전의 결과를 유지, 당신이 + 할 수 있도록 - */그것은 다음과 같이 파일 포맷됩니다. 따라서 2 개의 연산이 있다는 의미입니다 : 5 + 3을 더한 다음 이전 결과에서 1을 뺍니다. 기타.
파일 열기가 잘되었지만 올바르게 읽을 수있는 방법을 알 수 없습니다. 이상적으로, 그것은 첫 번째 정수를 읽고, 다음 라인 수를 읽고, 연산을 수행하는 루프를 입력합니다. for 루프가 첫 번째 작업 횟수만큼 완료된 후에도 while 루프를 읽는 동안 여전히 파일에 있지만 for 루프를 다시 입력하고 더 많은 작업을 읽고 계산합니다.
샘플 코드
문제가 결코 for 루프를 입력하고 싶어한다는 것입니다, 그것은 작업의 더 (수 2없는 것을 읽을 수 있지만 그것은 오히려에가는 것보다 while 루프를 통해 계속
while(myfile) // while reading the file
{
int PR = 0; //initialize the previous result as 0
myfile >> no; // grabbing the number of operations
cout << no << endl; // testing to see if it got it correct
for (int i = 1; i <= no; i++) // for the number of operations
{
myfile >> no >> op >> x >> y; // read the lines
if (op == "add") //there would be an if for each operation
{
PR = x + y;
}
}
myfile >> no >> op >> x >> y;
}
루프
** 업데이트 된 코드 ** 잘못된
while(myfile) // while reading the file
{
int PR = 0; //initialize the previous result as 0
myfile >> no; // grabbing the number of operations
for (int i = 1; i <= no; i++) // for the number of operations
{
myfile >> op;
if (op == "add")
{
myfile >> x >> y;
PR = x + y;
}
if (op == "sub_prev")
{
myfile >> x;
PR = PR - x;
}
if (op == "mul")
{
myfile >> x >> y;
PR = x * y;
//cout << x << y << PR << endl; //testing mul operation
}
}
cout << "The result of operation " << " is " << PR << endl;
}
제대로 계산
하지만, 출력 :
Enter file name: newfile.txt
The result of operation is 7
The result of operation is 20
The result of operation is 20
RUN SUCCESSFUL (total time: 3s)
우리가 정확히 무엇을하고 있는지 알 수 있도록 코드를 작성할 수 있습니까? 지금까지 가지고있는 것을 보여주십시오. –
그걸 입력하지 않았다는 것을 어떻게 알 수 있습니까? 어떻게 확인하니? 나는 문자열에 대한 >> 동작을 모른다. 그래서 아마도 fscanf를 사용했을 것이다. – wendelbsilva
for 루프에 cout 문을 넣었습니다. 아무 것도 출력하지 않았습니다. –