C ++ - 循环函数或程序永远?

时间:2013-10-22 13:31:41

标签: c++ loops calculator

制作我的第一个C ++程序。基本的计算器。 我被困在这个部分,我想让程序重复。

因此,在“A点”,您可以选择是否要计算除法/加法等,并将它带到那里。当你运行一次时,它会询问你是否要重复这个功能(例如除法)或回到“A点”(你只需输入y [yes](重复除法)或n [no](转到“ A点“))。 我是C ++的新手,还没有真正熟悉的循环。 此外,代码结构让我头晕目眩,因此Google对我帮助不大。 我听说过“goto”功能(或者你称之为的任何功能),但我被告知在这种情况下我不应该使用它。

看一看。文本和大部分评论都是芬兰语,但我希望你能从英语评论中得到重点。

#include <iostream>
using namespace std;

float addition(float num1, float num2)
{
    return num1 + num2;
}
float substraction(float num1, float num2)
{
    return num1 - num2;
}
float multiplication(float num1, float num2)
{
    return num1 * num2;
}
float division(float num1, float num2)
{
    return num1 / num2;
}
//This function should throw you back to point 'A'
int valinta2{
    while (valinta2 == y){

    }
}


int main(void)
{
    //Point A
    float number1;
    float number2;
    int valinta;
    cout << "\n-*-*-*-*-*-*-*-*-*-*\nClaudion Laskin\n-*-*-*-*-*-*-*-*-*-*";
//Select what you want to count
    cout << "\n\n\nValitse mita haluat laskea.  \n\nVaihtoehdot: " << endl;
    cout << "1. Plus-laskut\n 2. Vahennys-laskut\n  3. Kerto-laskut\n   4. Jako-laskut \n\nValinta: ";
    cin >> valinta;

    if (valinta == 1){

        //Addition
        cout << "\n\n\n===============\n||Plus laskut||\n=============== \n\nSyota ensimmainen numero: ";
        cin >> number1;
        cout << "\n\n+\n\nSyota toinen numero: ";
        cin >> number2;
        cout << "\nTulos: " << addition(number1, number2) << "\n----------\n" << endl;
        cin.get();
        //if 'y' run the task again, if 'n' goto start
        cout << "-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\nKirjoita 'y' jos haluat jatkaa, 'n' jos haluat valikkoon\n-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n";
        cin.get();
    }

    else {
        if (valinta == 2){
            //Subtraction
            cout << "\n\n\n===================\n||Vahennys laskut||\n=================== \n\nSyota ensimmainen numero: ";
            cin >> number1;
            cout << "\n\n-\n\nSyota toinen numero: ";
            cin >> number2;
            cout << "\nTulos: " << substraction(number1, number2) << "\n----------\n" << endl;
            cin.get();
            //if 'y' run the task again, if 'n' goto start
            cout << "-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\nKirjoita 'y' jos haluat jatkaa, 'n' jos haluat valikkoon\n-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n";
            cout << "Valinta: ";
            cin >> valinta2;
        }
        else {
            if (valinta == 3){
                //Multiplication
                cout << "\n\n\n================\n||Kerto laskut||\n================ \n\nSyota ensimmainen numero: ";
                cin >> number1;
                cout << "\n\n*\n\nSyota toinen numero: ";
                cin >> number2;
                cout << "\nTulos: " << multiplication(number1, number2) << "\n----------\n" << endl;
                cin.get();
                //if 'y' run the task again, if 'n' goto start
                cout << "-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\nKirjoita 'y' jos haluat jatkaa, 'n' jos haluat valikkoon\n-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n";
                cin.get();
            }
            else {
                if (valinta == 4){
                    //Division
                    cout << "\n\n\n===============\n||Jako laskut||\n=============== \n\nSyota ensimmainen numero: ";
                    cin >> number1;
                    cout << "\n\n/\n\nSyota toinen numero: ";
                    cin >> number2;
                    cout << "\nTulos: " << division(number1, number2) << "\n----------\n" << endl;
                }
            }
        }
    }
    system("pause");
    return 0;
}

3 个答案:

答案 0 :(得分:2)

您需要重构代码以在main方法中包含while循环。有可能“转到”你的“A点”,但它们很乱,不应该使用(goto是这里的关键字。)

所以在“A点”,插入

do {
    float number1;
    // ...

然后在你要拨打valinta2的地方(注意你现在甚至没有调用该函数 - 我猜它必须在调用{{1}之前}},检查条件,如下:

system("pause")

最好重新阅读您选择的C ++教程中的流控制/循环章节,例如:其中一个提到:The Definitive C++ Book Guide and List

答案 1 :(得分:1)

替代nyarlathotep的完美答案,我喜欢使用的一种方法遵循以下形式:

while(true) {
    //do stuff
    //then when ready to check for exit condition
    if(exitCondition == true) { //the ==true part is redundant
        break;
    }
    //do more stuff
    //if you need to go to the beginning of the loop and 
    //skip any code following a point, do this:
    if(skipRestOfLoopCondition) {
        continue;
    }
    //you can always check other exit conditions or check 
    //the same one at multiple places
    if(someOtherExitCondition) {
        break;
    }
    //do even more stuff
}
system("pause");
return 0;

作为警告,您必须为导致if实际执行的break;中的至少一个提供一种方法,因为while(true)循环条件永远不会让您离开循环,你只能通过break;离开循环。

答案 2 :(得分:-1)

我对此很陌生,我不知道我是不对的。我几乎无法理解你的代码。但是,当我在c中为arduino编程时,我希望我的代码永远循环我只是放     void loop(){//我的代码从这里开始