2017-10-08 28 views
-2

私は前に作業していたプログラムをモジュール化しようとしています。私は主からすべてを取り出し、それを機能に入れました。私の問題は、変数を初期化せずに、ユーザーが数値を入力するのを待たずに、Mainですべてがうまくいけばうまくいきました。これらの関数が関数になったので、私は初期化されていないというエラーが出てきます。どうしてこれなの?私はそれらをすべて0を作る場合は、ユーザーが自分の番号を入力すると、その後の変数がここに0をとどまる私のコードです:関数の初期化されていないローカル変数

#include <iostream> 
#include <cstdlib> 
using namespace std; 

void displayMenu(); 
void findSquareArea(); 
void findCircleArea(); 
void findTriangleArea(); 

const double PI = 3.14159; 

int main() 
{ 

displayMenu(); 

return 0; 
} 

void displayMenu() { 

int choice; 

do { 
    cout << "Make a selection for the shape you want to find the area of: \n"; 
    cout << "1. Square\n"; 
    cout << "2. Circle\n"; 
    cout << "3. Right Triangle\n"; 
    cout << "4. Quit\n"; 

    cin >> choice; 


    switch (choice) { 
    case 1: 
     findSquareArea(); 
     break; 

    case 2: 
     findCircleArea(); 
     break; 

    case 3: 
     findTriangleArea(); 
     break; 

    case 4: 
     exit(EXIT_FAILURE); 

    default: 
     cout << "Invalid entry, please run program again."; 
     break; 

    } 

    for (int i = 0; i <= 4; i++) { 
     cout << "\n"; 
    } 
} while (choice != 4); 

} 

void findSquareArea() { 

double length, 
    area = length * length; 

cout << "Enter the length of the square."; 
cin >> length; 
cout << "The area of your square is " << area << endl; 

} 

void findCircleArea() { 

double radius, 
    area = PI * (radius * radius); 

cout << "Enter the radius of the circle.\n"; 
cin >> radius; 
cout << "The area of your circle is " << area << endl; 

} 

void findTriangleArea() { 

double height, base, 
    area = (.5) * (base) * (height); 

cout << "Enter the height of the triangle.\n"; 
cin >> height; 
cout << "Enter the length of the base.\n"; 
cin >> base; 
cout << "The area of your triangle is " << area << endl; 

} 
+0

'倍の長さ、面積=長さ*長...のように記述する必要があります;'あなたはそれを初期化する前に、 'length'を利用 – VTT

+0

問題はどこに長さ*長さとして領域を初期化するのですか? –

+0

これはそのような問題の一般的なパターンです。あなたは 'base'と' radius'と同じことをします – VTT

答えて

1

あなたは、例えば、初期化されていない変数に基づいている表情を持っていますarea = length * lengthdouble length, area = length * length; C++は、Excelのようなものではなく、パラメータが変更されたときに自動的に再計算される数式を定義できることに注意してください。むしろコードが記述されているところでは、「式」はむしろ評価されます。

だからあなたのコードのような...

double length, 
    area = length * length; 

cout << "Enter the length of the square."; 
cin >> length; 
cout << "The area of your square is " << area << endl; 

double length = 0.0, area; 


cout << "Enter the length of the square."; 
cin >> length; 
area = length * length; 
cout << "The area of your square is " << area << endl; 
+0

これは私がVTTのコメントのおかげでやったことですが、これは最初の正しい答えであるので、私はこれをupvoteします。 –

関連する問題