我是编程新手,这是我设计的第一个程序。它是一个计算器,在一个部分中我要求用户输入他/她是否想要输入另一个总和,如果他们说是,则重复输入x,输入操作符,输入y并将它们全部添加到进程中。我遇到的唯一问题是,如果你不止一次重复这个过程然后完成...函数返回到它自己(前一个调用者)而不是像我想要的那样。到目前为止,我已经尝试了#pragma once
,#define
并使用了额外的功能,但解决方案仍然存在问题。
我发现这很难解释所以这是整个程序,所以你可以看到什么。我在说:
// Simple Calculator v3.cpp : Defines the entry point for the console application.
//
#include "tots.h"
double userInput()
{
using namespace std;
//Prompt the user to enter a digit
cout << " Please enter a digit: " << endl;
cout << " ";
//Declare a variable and assign the user's input to that variable
double input;
cin >> input;
//Return the digit the user entered
return input;
}
int userOperatorInput()
{
using namespace std;
//Prompt the user to enter an operator
cout << " Please enter the desired mathematical operation: "
<< "+ = 1; - = 2, * = 3, / = 4 " << endl;
cout << " ";
//Declare a variable and assign the user's input to that variable
int op;
cin >> op;
//Return the operator the user entered;
return op;
}
int userFinished()
{
using namespace std;
/*Ask the user whether he/she has entered the function he/she desires or if they have not
yet finished*/
cout << " Have you finished the function? "
<< "yes = 1; no = 0" << endl;
cout << " ";
//Declare a variable and assign the user's input to that variable
int userfinished;
cin >> userfinished;
//Return the user's input
return userfinished;
}
double calculateSolution(double input1, int op, double input2)
{
//Determine which operator the user entered and calculate the solution accordingly
if (op == 1)
return input1 + input2;
else if (op == 2)
return input1 - input2;
else if (op == 3)
return input1 * input2;
else if (op == 4)
return input1 / input2;
else return -1;
}
double moreCalculus(double solution)
{
double xtrainput1 = solution;
int xtraop = userOperatorInput();
double xtrainput2 = userInput();
double xtrasolution = calculateSolution(xtrainput1, xtraop, xtrainput2);
bool xtrafinished = userFinished();
if (xtrafinished == 0)
moreCalculus(xtrasolution);
else
{
#ifndef RETURN
#define RETURN
return xtrasolution;
#endif
}
}
void displaySolution(double input1, int op, double input2, double solution)
{
using namespace std;
cout << " " << input1 << " " << op << " " << input2 << " = " << solution << endl;
}
void displayXtraSolution(double xtrasolution)
{
using namespace std;
cout << setprecision(20);
cout << " Solution: " << xtrasolution;
}
void end()
{
using namespace std;
int x;
cin >> x;
}
int main()
{
//Input from the user
double input1 = userInput();
//Operation user requires
int op = userOperatorInput();
//Second input from user
double input2 = userInput();
/*Declare and assign a boolean that informs whether the user has finished
the operation or not*/
bool finished = userFinished();
//Calculate the solution
double solution = calculateSolution(input1, op, input2);
//If the user has finished, display the solution
/*If the user hasn't finished, assign the required inputs from the user and calculate the
solution*/
if (finished == 1)
{
displaySolution(input1, op, input2, solution);
}
else
{
double xtrasolution = moreCalculus(solution);
displayXtraSolution(xtrasolution);
}
/*Finally, display some information on screen and ask whether the user requires to calculate
any more operations or if he/she wants to terminate the application*/
请注意,我制作了一个包含"stdafx.h"
和<iostream>
的标头文件。
答案 0 :(得分:1)
你应该看loops,如果你的代码需要阻止你突破它。
答案 1 :(得分:0)
使用do..while循环
int main(){
do{
//your code section
cout<<"Do you want to continue(Y/N):";
cin>>ch;
}while(ch=='Y'||ch=='y');
}