2017-08-23 2 views
-1

私はC++の初心者です(私のコースには4日ほどかかります)。私はそれが欲しいと思うように動作するような小さなプログラムを作成しました。このシンプルなプログラムは意味的に正しいですか?

クイック概要:

プログラムはあなたの名前を尋ねます。 は、一緒に追加する2つの番号を尋ねます。 は答えを表示します。 はy/nをもう一度計算するかどうかを尋ねます。

しかし、私は書式の点で列車の騒動のように感じることはできません。

特にAgain()関数... その中で、別の関数を呼び出すことによってループを作成しましたif条件が真です。ように:

bool Again() { 

std::cout << "Would you like to calculate again y/n?\n"; 
std::string answer = ""; 
std::cin >> answer; 

if (answer[0] == 'y') { 
    std::cout << "Cool lets do it then \n"; 
    PickTwo(); 
    Again(); 
} 
else { 
    std::cout << "alright, goodbye\n"; 
} 
return 0; 
} 

私はAgain()で行ったようにループを作成するのは適切かどうかですか?もしそうなら、正しい方法がありますか?

これは、全体のプログラムは次のとおりです。

#include <iostream> 
#include <string> 

void Greetings(); 
int PickTwo(); 
bool Again(); 

int main() { 

    Greetings(); 
    PickTwo(); 
    Again(); 

    system("pause"); 
    return 0; 
} 

void Greetings() { 

    std::cout << "Hi my name is Program, we're going to do something today. \n"; 
    std::cout << "Whats your name?\n"; 
    std::string Name; 
    std::getline(std::cin, Name); 
    std::cout << "Hi " << Name << ", we're going to try to do math\n"; 
    return; 
} 

int PickTwo() { 

    std::cout << "Please pick the numbers to be added\n"; 
    int firstNumber; 
    std::cin >> firstNumber; 
    int secondNumber; 
    std::cin >> secondNumber; 

    int Answer = firstNumber + secondNumber; 

    std::cout << "This are your numbers " << firstNumber << " and " << secondNumber << std::endl; 
    std::cout << "If we add them you have " << Answer << std::endl; 


    return Answer; 
} 

bool Again() { 

    std::cout << "Would you like to calculate again y/n?\n"; 
    std::string answer = ""; 
    std::cin >> answer; 

    if (answer[0] == 'y') { 
     std::cout << "Cool lets do it then \n"; 
     PickTwo(); 
     Again(); 
    } 
    else { 
     std::cout << "alright, goodbye\n"; 
    } 
    return 0; 
} 

が、彼らは最悪を取得する前に、私は悪い習慣を修正するのに役立つだろういけないことを知って、事前にありがとうございます。

+0

問題は何ですか? –

+0

Again()のやり方と同じようにループを作成するのは適切かどうかですか?もしそうなら、正しい方法がありますか? – Alphawarz

+0

私の意見では、あなたが真か偽を返すと言ったときに0を返すように間違っています。これは問題について集中的に質問し、正しいことをしているかどうかを尋ねてプログラムすることを学ぶ場所ではありません。 –

答えて

1

Again()で行ったようにループを作成するのは適切かどうかですか?もしそうなら、正しい方法がありますか?

テール再帰をサポートしていない言語では、プログラムがスタックオーバーフローを引き起こす可能性があります。私はあなたがそれをコード化した方法で使用することをお勧めしません。

whileループまたはdo-whileループを使用する方が良いでしょう。ループでは、をもう一度実行してください。

+0

またはdo-while'ループ –

+2

@JohnJoeを使用してください。 –

関連する問題