-5

このプログラムの望ましい成果は次のとおりです。

形状を選択 (1) 球 (2) 円柱 (3) 円錐 (q) 終了: 1
計算を選択 (1) 体積 (2) 表面積: 1
球の半径を入力: 5.5
球の体積は 696.91

形状を選択 (1) 球 (2) 円柱 (3) 円錐 (q) 終了: 1
計算を選択 (1) 体積 (2) 表面積: 2
球の半径を入力: 5.5 球
の表面積は 380.133 です

形状を選択 (1) 球 (2) 円柱 (3) 円錐 (q) 終了: 2
計算を選択 (1) 体積 (2) 表面積: 1
円柱の半径を
入力: 5.5 円柱の高さを入力: 4.2
円柱の体積は 399.139 です

形状を選択 (1) 球 (2) 円柱 (3) 円錐 (q) 終了: 2
計算を選択 (1) 体積 (2) 表面積: 2
円柱の半径を
入力: 5.5 円柱の高さを入力: 4.2
の表面積シリンダーは335.208

形状を選択 (1) 球 (2) 円柱 (3) 円錐 (q) 終了: 3
計算を選択 (1) 体積 (2) 表面積: 1
円錐の半径を
入力: 5.5 円錐の高さを入力: 4.2
円錐の体積は 133.046 です

形状を選択 (1) 球 (2) 円柱 (3) 円錐 (q) 終了: 3
計算を選択 (1) 体積 (2) 表面積: 2
円錐の半径を
入力: 5.5 円錐の高さを入力: 4.2
の表面積コーンは 214.607

形状を選択 (1) 球 (2) 円柱 (3) 円錐 (q) 終了: q

さよなら!

これで私がどこに向かっているのかわかると思います...ループが正しく機能しないのはなぜですか?

#include <iostream>
#include <math.h>

using namespace std;

double sphere_volume(double radius);
double sphere_surface_area(double radius);
double cylinder_volume(double radius, double height);
double cylinder_surface_area(double radius, double height);
double cone_volume(double radius, double height);
double cone_surface_area(double radius, double height);

int main()
{
double entHeight;
double entRadius;
char shapeCall;
char compCall;

cout << "Select a Shape (1) sphere (2) cylinder (3) cone (q) quit: ";
cin >> shapeCall;
cout << "Select a Computation (1) volume (2) surface area: ";
cin >> compCall;


    if ( shapeCall == 1 && compCall == 1)
    {
            cout << "Enter Radius: ";
            cin >> entRadius;
            cout << sphere_volume (entRadius) << endl; 

    }
    if ( shapeCall == 1 && compCall == 2)

    {
            cout << "Enter Radius: ";
            cin >> entRadius;
            cout << sphere_surface_area (entRadius) << endl;
    }
    if ( shapeCall == 2 && compCall == 1)
    {
            cout << "Enter Radius: ";
            cin >> entRadius;
            cout << "Enter Height: ";
            cin >> entHeight;
            cout << cylinder_volume (entRadius, entHeight) << endl;
    }
    if (shapeCall == 2 && compCall == 2)
    {
            cout << "Enter Radius: ";
            cin >> entRadius;
            cout << "Enter Height: ";
            cin >> entHeight;
            cout << cylinder_surface_area (entRadius, entHeight) << endl;
    }
    if (shapeCall == 3  && compCall == 1)
    {
        cout << "Enter Radius: ";
        cin >> entRadius;
        cout << "Enter Height: ";
        cin >> entHeight;
        cout << cone_volume (entRadius, entHeight) << endl;
    }
    if (shapeCall == 3 && compCall == 2)
    { 
        cout << "Enter Radius: ";
        cin >> entRadius;
        cout << "Enter Height: ";
        cin >> entHeight;
        cout << cone_surface_area (entRadius, entHeight) << endl;
    }
system ("pause");
return 0;
}


double sphere_Volume(double radius) 
  { 
   return 4.0 / 3.0 * 3.14159 * pow( radius, 3 ); 
  }
double cylinder_volume(double radius, double height)
  { 
  return 3.14159 * pow(radius, 2) * height;
  }
double cone_volume(double radius, double height)
  {
  return 1.0 / 3.0 * 3.14159 * pow(radius, 2) * height;
  }
double sphere_surface_area(double radius)
  {
  return 4.0 * 3.14159 * pow(radius, 2);
  }
double cylinder_surface_area(double radius, double height)
  {
  return (2.0 * 3.14159 * pow(radius, 2)) + (2.0 * 3.14159 * radius * height);
  }
double cone_surface_area(double radius, double height)
  {
  return (3.14159 * pow(radius, 2)) + (3.14159 * radius * sqrt(pow(radius, 2) +  pow(height, 2)));
  }
4

1 に答える 1

0

主な問題は 2 つあります。あなたは宣言しsphere_volumeます:

double sphere_volume(double radius);

しかし、あなたは定義しますsphere_Volume:

double sphere_Volume(double radius) 
{ 
    return 4.0 / 3.0 * 3.14159 * pow( radius, 3 ); 
}

で使用sphere_volumeしているのでmain、おそらく定義を に変更する必要がありますsphere_volume

もう 1 つの問題は、実際にはループがないことです。関数mainは一度実行されますが、その後ヒットreturn 0;してプログラムが終了します。

coutループを追加する 1 つの方法は、最初のコードで始まり、前に で終わるsystem("pause")コードを囲むことですwhile(shapeCall != 'q')

于 2013-02-23T11:53:16.927 に答える