返回int main()而不是之前的函数?

时间:2016-03-29 14:35:23

标签: c++ visual-studio function calculator

我是编程新手,这是我设计的第一个程序。它是一个计算器,在一个部分中我要求用户输入他/她是否想要输入另一个总和,如果他们说是,则重复输入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>的标头文件。

2 个答案:

答案 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');
    }