1

私は学校で別の仕事をしています。それは次のとおりです。

入力された 3 つの数値から最大のものを出力するプログラムを作成します。

これまでのところ、私はこれを行ってきました:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    int* numbers = new int[3];

    for(int i = 0; i < 3; i++) {
        cout << "Input number no. " << (i + 1);
        cin >> numbers[i];
        cout << endl;
    }


    system("PAUSE");
    return EXIT_SUCCESS;
}

私のnumbers配列で最大数を見つけるヘルパー関数/メソッドは C++ にありますか?

4

3 に答える 3

3

次のコード スニペットでmaxは、リストの最大数が含まれます。

int i;
int max=numbers[0];
for(i=1;i<3;i++)
{
   if(numbers[i]>max) max=numbers[i];
}

注: あなたの配列は小さすぎます。サイズは 2 ですが、サイズ 3 が必要であると確信しています。

于 2012-11-05T00:42:59.313 に答える
3

コンテナー( )内の最大要素を見つけるアルゴリズムがありますが、それはstd::max_element不適切です。あなたの状況は一定のメモリ消費で解決できるので、すべての数値を保存する必要はありません。任意の時点で、現在の最大値を覚えておく必要があります。

膨大な数の数字を処理する必要があると想像してください。その場合、それらすべてを保管することは望ましくありません。

もちろん、内部的にはmax_elementアルゴリズムは先ほど提案したのと同じことを行いますが、いずれにせよ、コンテナーが既にあることを前提としています。そうでない場合は、その場で最大値を更新してください。boost.accumulators ライブラリにはそれを行う機能がありますが、これを自分で記述できると確信しています。1 行か 2 行で済むはずです。

于 2012-11-05T00:46:26.553 に答える
0

ここでは配列は必要ありません。入ってくる数字を見てください:

int largest = std::numeric_limits<int>::min();
for (int i = 0; i < 3; ++i) {
    int value;
    std::cin >> value;
    if (largest < value)
        largest = value;
}
于 2012-11-05T13:25:36.813 に答える