0

配列の最小値を返す関数を作成しようとしています。これまでのところ、これはありますが、返されるのは 0 だけです。

forループを使用して配列を循環しているため、0が返される方法がわかりません。おそらく、私が思うように配列の値を循環していません。このコードの論理と誤謬について詳しく説明できる人はいますか?

#include <iostream>

using namespace std;

int newArray[9] = {4,5,9,3,6,2,1,7,8};


int minArray()
{
    int index = 1;
    int minimum;

    for (int i = 0; i < 9; i++)
    {
        if (newArray[i] > newArray[index])
        {
            minimum = newArray[index];
        }
        index++;

    }

    return minimum;
}


int main()    
{   
    cout << "original array:\n ";
    for (int i = 0; i < 9; i++)
    {
        cout << newArray[i] << ", ";
    }

    cout << "minimum value of array: ";
    cout << minArray();

    return 0;
}
4

4 に答える 4

1

配列内の要素で最小値を初期化することをお勧めします。そう:

minimum = newArray[0]

ループ内(答えが必要ないと仮定した疑似コード):

if: newArray[pos] < minimum

        minimum = newArray[pos];
于 2013-02-17T18:31:30.620 に答える
0

minimum既知の値または最大整数値で初期化する必要があります。

int minArray()
{
    int minimum = newArray[0];

    for (int i = 1; i < 9; i++)
    {
        if (minimum > newArray[i])
        {
            minimum = newArray[i];
        }
    }

    return minimum;
}

そして、あなたは間違った扱いをしてindexいます(実際にはそれはまったく必要ありません)。indexの代わりに使用できる方法の例minimum

int minArray()
{
    int index = 0;

    for (int i = 1; i < 9; i++)
    {
        if (newArray[index] > newArray[i])
        {
            index = i;
        }
    }

    return newArray[index];
}

どちらの例でも問題なく動作するはずですが、最初に使用することをお勧めします。

于 2013-02-17T18:46:49.170 に答える
0

変数は、minimum最初に配列内の値に割り当ててから、配列内の各要素を と比較する必要がありますminimum。より小さい場合は、minimumその値を割り当てます。

int minArray()
{
    int minimum = newArray[0];
    int index = 0;

    for (int i = 0; i < 9; i++)
    {
        if (newArray[i] < minimum)
        {
            minimum = newArray[i];
        }
        index++;

    }
  return minimum;
}
于 2013-02-17T18:31:46.667 に答える