0

だから、私はデバッグを開始し、これだけのコードを通り抜けます、

#include <cmath>
#include <string>
#include <iostream>

using namespace std;

int main()
{
    double radius,width,length,height,area,base;
    int shape;
    const double pi =3.14159;
    cout<< "Please choose from the following menu. \n"
            "Geometry Calculator \n"
            "1. Calculate the Area of a Circle \n"
            "2. Calculate the Area of a Rectangle\n"
            "3. Calculate the Area of a Triangle\n"
            "4. Quit\n";
    cin>>shape;
    if(shape>4 || shape < 1)
    {
        cout<<"Your selection was not acceptable.\n\a\a"
              "Please choose from the following menu. \n"
              "Geometry Calculator \n"
              "1. Calculate the Area of a Circle \n"
              "2. Calculate the Area of a Rectangle\n"
              "3. Calculate the Area of a Triangle\n"
              "4. Quit\n";
    }
switch (shape)
{
case '1':
    cout<<"What is the radius of the circle?\n";
    cin>>radius;
    if(radius<0)
    {
        cout<<"Please enter a non-negative radius.\n\a";
        cin>>radius;
    }

    area = pow(radius,2) * pi;

    cout<<"Your circle has an area of " <<area<<".";
    break;


case '2':
    cout<<"What is the width of the rectangle?\n";
    cin>>width;
    if(width<0)
    {
        cout<<"Please enter a non-negative width.\n\a";
        cin>>width;
    }
    cout<<"What is the length of the rectangle?\n";
    cin>>length;
    if(length<0)
    {
        cout<<"Please enter a non-negative length.\n\a";
        cin>>length;
    }
    area = length * width;
    cout<<"The area of your rectangle is " <<area<<".\n";
    break;

case '3':
    cout<<"What is the base of the triangle?\n";
    cin>>base;
    if(base<0)
    {
        cout<<"Please enter a non-negative base measurement.\n\a";
        cin>>base;
    }
    cout<<"What is the height of the triangle?\n";
    cin>>height;
    if(height<0)
    {
        cout<<"Please enter a non-negative height measurement.\n\a";
        cin>>height;
    }
    area = base*height*.5;
    cout<<"Your triangle's area is "<<area<<".\n";
    break;
}
}

など-実際にはで止まると思いますcin。デバッグウィンドウが突然閉じ、これが発生したときに出力ウィンドウに表示されるのは次のとおりです。

'heather t chapter 4 21.exe' (Win32): Loaded 'C:\Users\Heather\Documents\Visual Studio 2012\Projects\heather t chapter 4 21\Debug\heather t chapter 4 21.exe'. Symbols loaded.
'heather t chapter 4 21.exe' (Win32): Loaded 'C:\Windows\SysWOW64\ntdll.dll'. Cannot find or open the PDB file.
'heather t chapter 4 21.exe' (Win32): Loaded 'C:\Windows\SysWOW64\kernel32.dll'. Cannot find or open the PDB file.
'heather t chapter 4 21.exe' (Win32): Loaded 'C:\Windows\SysWOW64\KernelBase.dll'. Cannot find or open the PDB file.
'heather t chapter 4 21.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcp110d.dll'. Symbols loaded.
'heather t chapter 4 21.exe' (Win32): Loaded 'C:\Windows\SysWOW64\msvcr110d.dll'. Symbols loaded.
The program '[3800] heather t chapter 4 21.exe' has exited with code 0 (0x0).

世界で何が起こっているのですか、どうすれば修正できますか?

4

2 に答える 2

1

エラーは、switchステートメントでを取り込んでint使用していることです。character

case '1':に変更case 1:

参考までに、C ++の文字は、 ASCII値に基づいて数値として保存されます。そのため、プログラムは、入力'1'に値があるかどうかを確認しようとしていることに文句を言いません。49

于 2013-02-10T00:32:16.960 に答える
1

問題は、あなたがとして読んshapeでいるintが、switchそれをとして読んでいることcharです。スイッチケースはcase 1:、ではなく、のようになりますcase '1':

プログラムが完了した後にコンソールを閉じるのを防ぐためcin.get()に、コードの最後にキーが押されるのを待つためのを追加できます。

于 2013-02-10T00:59:44.167 に答える