2017-10-26 2 views
1

私は最近、関数を宣言するタスクを割り当てられており、その関数内でユーザー入力を3回読み込み、その入力を3変数に格納して1つの値これらの3つの変数のソート操作を実行することによって計算されます。関数内のユーザー入力の読み取りと結果の出力について

このように、私は運がなかったのでアドバイスが必要です。ここで

は、これまでの私のコードです:

#include <iostream> 
using namespace std; 

double calcABCsum(int a, int b, int c); 

int main() 
{ 
    int a, 
     b, 
     c; 

    double x; 

    calcABCsum(); 

    cout << "The sum is: " << x; 

    return 0; 
} 

double calcABCsum() 
{ 
    int a; 
    int b; 
    int c; 

    double x; 

    cout << "Please enter a: "; 
    cin >> a; 
    cout << "Please enter b: "; 
    cin >> b; 
    cout << "Please enter your c: "; 
    cin >> c; 

    x = a + b + c; 

    return x; 
} 

私のコードは、私はそれが望むようにコンパイルされません。基本的には、関数内のユーザー入力を読み込んで結果を出力する方法を探しています。ありがとう!

+0

関数内のxはローカル変数です。つまり、関数外で初期化したグローバル変数xには何の影響も与えません。また、現在の変数の初期化の代わりに 'int a、b、c;'を実行することもできます。より効率的にしたい場合は、現在の戻り値の代わりに 'return a + b + c;'を記述することができます。これは 'double x;'の必要性も取り除きます。 –

+0

実際のコンパイルエラーを参照している場合は、機能定義に一致するように上部の関数ヘッダーを変更する必要があります。 (パラメータは必要ありません)。あなたが間違った価値を出力していると言えば、その質問はすでに答えられていると思います。 – EdmCoff

+0

いくつかの一般的なアドバイス:「ユーザー入力を3回読み、その変数を3つの変数に格納して1つの値を返す」というのは一般的には悪い設計なので、1つの関数は入力を読み込んで同時に結果を計算してはいけません。別々の機能に分割されます。 – smoothware

答えて

2

2つの主な問題があります。

  1. あなたは3つの変数を取る関数としてのあなたのファイルの先頭に機能calcABCSum()を宣言しているが、あなたは以下のことを定義するときに、それはパラメータを取りません。

  2. 最初の問題を修正した後も、変数xを宣言していて、それを任意の値に割り当てていないだけです。

あなたが呼び出している関数の戻り値に、ローカルx変数を割り当てる必要があります:

double x = calcABCSum(1, 2, 3); 
+0

それは実際には意味があります。 私は関数にxを代入すると関数に引数が少なすぎると答えたので、a、b、cを使いました。さて、ログには、 "未定義のrefrence"があるため、1を戻しているというメッセージが表示されます。現在、問題の内容を把握しようとしています。 –

+0

下記の投稿を参照してください –

0

はそんなにbennji_of_the_overflowをありがとうございました!私は私の解決策を見つけた。あなたの答えと組み合わせることで

は、私も自分の機能のための私の関数ヘッダ行として

calcABCsum(int, int, int) 

をしました。それは問題を解決しました。どうもありがとうございます!しかし、なぜ "int int int"と入力しなければならないのか知りたいのですが、 "a b c"と入力するだけではありませんか?