2016-03-29 6 views
-2

Ich bin ein Neuling für die Programmierung und das ist das erste Programm, das ich entwerfe. Es ist ein Taschenrechner und in einem Abschnitt frage ich den Benutzer, ob er/sie eine andere Summe eingeben möchte, und wenn er ja sagt, wiederhole die Eingabe x, Eingabeoperator, Eingabe y und füge alle Prozesse hinzu. Das einzige Problem, das ich habe, ist, dass, wenn Sie den Prozess mehr als einmal wiederholen und dann beenden ... die Funktion kehrt zu sich selbst (der vorherige Aufrufer) und nicht zu main, wie ich es will. Bisher habe ich versucht, #pragma once, #define und eine zusätzliche Funktion verwenden, aber die Lösung geht immer noch Hosen runter.Zurück zu int main() anstatt zur vorherigen Funktion?

Ich finde das schwer zu erklären, also hier ist das ganze Programm, so dass Sie sehen können, was. Ich spreche über:

// 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*/ 

Bitte beachte, dass ich eine Header-Datei aus, die "stdafx.h" und <iostream> enthält.

+3

Wenn Sie denken, '#pragma once' würde irgendwie helfen, Sie dann * wirklich * müssen zurück gehen, was auch immer Ressource Sie haben C++ zu lernen. Davon abgesehen, was Sie wollen, ist eine Schleife. – Biffen

+0

so hin und her zu springen ist das, was [BASIC] (https://en.wikipedia.org/wiki/BASIC) zu einer so verhassten Sprache gemacht hat, da es [* spaghetti code *] erzeugt (https: //en.wikipedia .org/wiki/Spaghetti_code), der schwer zu folgen, zu verstehen und zu pflegen ist. –

Antwort

1

Sie sollten sich loops ansehen, wenn Ihr Code aufhören muss, brechen Sie einfach aus.

0

Verwendung do..while Schleife

int main(){ 
    do{ 
    //your code section 
    cout<<"Do you want to continue(Y/N):"; 
    cin>>ch; 
    }while(ch=='Y'||ch=='y'); 
    }