0

幾何学的形状の面積と周長を計算します。最初に、ユーザーは形状を表す文字を入力するよう求められます。円には C、長方形には R、正方形には S を使用します。
ユーザーが形状を選択すると、プログラムはそれに応じて形状の適切な寸法を要求します。たとえば、ユーザーが正方形を選択した場合、プログラムは側面を尋ねます。円の場合、プログラムは半径を尋ねます。長方形の場合は、長さと幅を尋ねます。適切な寸法を受け取ると、プログラムは要求された形状の面積と周囲を計算し、画面に出力します。繰り返しになりますが、コードは別の文字を要求します。ユーザーが「Q」を入力すると、プログラムは終了します。

プログラムの 1 回の実行は次のようになります。

Please Enter Shape (C: Circle, S: Square, R: Rectangle Q:quit)
>S
Please enter the side of the square 
> 8
The area is 64 and the perimeter is 32
Please Enter Shape (C: Circle, S: Square, R: Rectangle Q:quit)
>R 
Please enter the width of the rectangle 
> 5 
Please enter the length of the rectangle
> 7  
The area is 35 and the perimeter is 24
Please Enter Shape (C: Circle, S: Square, R: Rectangle Q:quit) 

これは私がこれまでに行ったことですが、Sを押したときに正方形の側面を求めることができない理由がわかりません.

私が得たものは次のとおりです。

Please Enter Shape (C: Circle, S: Square, R: Rectangle Q:quit)

そして、Q を除いて何を入力しても、同じ質問が繰り返されます。Q は停止しますが、入力された他のチャーターは次のように求めます。Please Enter Shape (C: Circle, S: Square, R: Rectangle Q:quit)

何が起こっている ?

#include <iostream>

using namespace std;
int main()
{
    //clear the screen.
    //clrscr();
    //declare variable type int
    char shape = 'N'; //none
    int area, perimeter;
    while( shape != 'Q' )
    {
        cout<<"Please Enter Shape (C: Circle, S: Square, R: Rectangle Q:quit) >"<<endl;
        //get shape choice
        cin>>shape;

        if( shape == 'C' )
        {
        int radius;
        //Circle, radius
        cout<<"Please enter the radius >"<<endl;
        }
        else if( shape == 'S' )
        {
        int side;
        //Input the side
        cout<<"Please enter the side of the square >"<<endl;
        //Square, side
        cin>>side;
        //calculate perimeter and save it in 'peri'
        perimeter=4*side;
        //show the output 'perimeter'
        cout<<"Perimeter of square is "<<perimeter<<endl;
        }
        else if( shape == 'R' )
        {
        int width,length;
        //Rectangle, width,length
        }
    }
    return(0);
}
4

1 に答える 1

2

条件を次のように変更します

if (shape == 'R')

if (shape == 'R' || shape == 'r')

または、テストする前にすべてを 1 つのケースに変更します。

cin >> shape;
shape = std::toupper(shape);
if (shape == 'R') // already know it is between A-Z, so we can just check the uppercase
于 2013-10-18T19:04:21.700 に答える