2017-05-03 10 views
0

average()に必要なパラメタ/オーバーロードを正しく渡すにはどうすればいいですか?私の主な機能の中にある機能ですか? 私は2つのパラメータを取る関数を作成しましたが、メインでどのようにパラメータを渡すのですか?C++でユーザー入力にパラメータを正しく使用する方法

#include <iostream> 

using namespace std; 



float average(int v[], int n) { 
    //n = number of elements 
    //v = the vector 

    int sum = 0; 
    int avg = 0; 

    for (int i = 0; i <= n; i++) { 
     cout << "Enter a number: "; 
     cin >> v[i]; 
     sum += v[i]; 

    } 
    avg = (double)sum/n; 

    cout << avg; 

    return 0; 

} 

int main() { 
    average(); 
} 
+2

だから基本的には10個の数字をユーザーに依頼する方法を知りたいですか? – NathanOliver

+0

私はそれを置くことが1つの方法だと思います:p –

+1

[良いC++の本](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – NathanOliver

答えて

1
行うには

第一のものは、あなたが

for(auto x = 0; x < argc; x++) 
{ 
    std::cout << "argv[" << x << "] = " << argv[x] << std::endl; 
} 

ARGV上でループを行うことができます...パラメータを取るためにmainメソッドを変更し、その後

int main(int argc, char** argv) 

ですそれらがすべて文字列であり、argが0であることを覚えておいてください。

今、実行時にユーザーからの入力をループして取り込むことができます。

これがあなたの希望するalgであれば入力してください。その後のようなものです:あなたは、それは、ユーザが彼/彼女が望んでいるほど多くの数字を入力して、特別な番号や文字でそれらを終了することを可能にすることによって、よりインタラクティブ(文字の場合は変換を気に行うことができます

#include <iostream> 
using namespace std; 

int main() { 
    const auto K = 10; 
    int array[K]; 
    std::cout << "Please give then numbers..." << std::endl; 
    int sum = 0; 

    for (size_t i = 0; i < K; i++) 
    { 
     std::cin >> array[i]; 
    } 


    for (int i = 0; i < K; i++) { 
     sum = sum + array[i]; 
    } 
    double avg = double(sum)/K; 
    std::cout << "avg: " << avg << std::endl; 

    return 0; 
} 
+1

あなたはもっと複雑に見えるようにしました。よりシンプルなバージョンをやってみるといいでしょう。あなたが投稿したメソッドは「シンプル」ですが、私のコードを見ればもう少し分かります:p –

+0

こんにちは@ChristofferNilsson、フィードバックありがとう.... –

+1

それははるかに読みやすいですが、私はパラメータを使用しようとしていたので、私はパラメータを持つ関数を作成し、メインでそれを訴えたい: –

1

を)例0のために、あなたは合計を計算したり、平均や...ので、コードは次のように行くことができます。

#include <iostream> 
using namespace std; 

int main() { 

    int current = 0; 
    int sum = 0; 
    int count = 0; 

    while(true) 
    { 
     cout << "Please enter next number(end by entering 0): "; 
     cin << current; 
     cout << endl; 
     sum = sum + current; 
     count++; 
    } 

    double avg = sum/count; 
    cout << "sum: " << sum << endl; 
    cout << "avg: " << avg << endl; 

    return 0; 
} 

編集:あなたは本当に引数を使用し、これを機能させるかどう 方法です:

#include <iostream> 
#include <stdlib.h>  /* atoi */ 
using namespace std; 

double avg(int argc, char** argv){ 

     int i=1; 
     double sum = 0; 

     while(i<argc){ 
       try{ 
         sum = sum + atoi(argv[i]); 
       } 
       catch(int ex){ 
         cout << "Failed to calculate average" << endl; 
         exit; 
       } 
       i++; 
     } 
     sum = sum/(argc-1); /* note that we have one extra argument because of the name of program. */ 
     return sum; 
} 

int main(int argc, char** argv) { 

    double result = avg(argc, argv); 
    cout << "avg: " << result << endl; 

    return 0; 
} 
+0

方法はありますか?この周りのパラメータで関数を作成し、main関数の中でその関数を使用しますか? –

+0

@ChristofferNilssonはい、あなたの質問を編集してC#ソリューションをそこに置いてください。あなたが本当に必要なものを理解できるようにしてください。 –

+0

質問を編集しました –

0

たぶん、あなたは(あなたの最後の編集ごとに)これをしたい:

#include <iostream> 

using namespace std;  

double Average(int a[], int size) 
{ 
    int sum = 0; 

    for (int i = 0; i < 10; i++) { 
    sum = sum + a[i]; 
    } 

    return (double)sum/size; 
} 

int main() { 
    int a[10] = { 1,2,3,4,5,6,7,8,9,10 }; 

    cout << Average(a, sizeof(a)/sizeof(a[0])) << endl; 
    system("pause"); 

    return 0; 
} 

sizeof(a)/sizeof(a[0])a配列の要素数を取得する方法です。

vectorテンプレートクラスを使用したソリューションのような

以上のC++:

#include <iostream> 
#include <vector> 

using namespace std;  

double Average(vector<int> a) 
{ 
    int sum = 0; 

    for (auto & v : a) 
    sum = sum + v; 

    return (double)sum/a.size(); 
} 

int main() { 
    vector<int> a = { 1,2,3,4,5,6,7,8,9,10 }; 

    cout << "Average = " << Average(a) << endl; 
    system("pause"); 

    return 0; 
} 

、インタラクティブなユーザ入力:

int main() { 
    vector<int> a; 

    for (int i = 0; i < 10; i++) 
    { 
    cout << "Enter value " << i + 1 << endl; 
    int value; 
    cin >> value; 
    a.push_back(value); 
    } 

    cout << "Average = " << Average(a) << endl; 
    system("pause"); 

    return 0; 
} 
+0

私の質問にビットを変更しました –

+0

@ChristofferNilssonは依然としてあなたが望むものをクリアしていません。問題のC++コードは意味がありません。 Pleeeeseはあなたの働く** C#**コードを表示するので、あなたが何をしたいのかを理解することができます。 –

関連する問題