std::cinリクエストに到達すると単純な関数が終了するように見えるという問題があります。コンパイラは警告やエラーをスローせず、実行時エラーも発生しません。プログラムは単にメインメニューにフォールバックします。
スニペット:
#include <iostream>
#include <math.h>
using namespace std;
void circle()
{
float radius = 0.0f, diameter = 0.0f, circumference = 0.0f, area = 0.0f;
const float pi = 3.14f;
cout << "Enter radius." << endl;
cin >> radius;
cout << "Radius: " << radius << endl;
cout << "Diameter: " << 2*radius << endl;
cout << "Cirumference: " << 2*pi*radius << endl;
cout << "Area: " << pi * pow(radius, 2) << endl;
}
関数はmain()から呼び出され、「半径の入力」が画面に表示されると正常に呼び出されますが、入力は要求されず、最後の4つのステートメントはスキップされます。その後、プログラムは単にmain()に戻ります。
cinもエラーがない(そしてmain()関数で再生している間も機能し続ける)ので、単にストリーム内の悪い文字を読んでいるとは思わない。
circle()が予期せず終了する理由がわかりません。