私は最後にこのコードを完成させましたが、1つの問題があります。出力 "Positions:"に対して、最小値が出現するすべての位置を出力します。しかし、私のコードは、ランダムに生成された各配列(サイズ20)の最小値の最後の位置のみを出力します。最小限になる複数の位置を出力しながら、このプログラムをどのように冗長性の少ないものにすることができるかを教えてください。ありがとうございました!私のコードで "position:"をより正確にするにはどうすればよいですか?
#include <iostream>
#include <iomanip>
using namespace std;
double random(unsigned int &seed);
unsigned int seed = (unsigned int)time(0);
const int SIZE = 20;
void print_array (int a[]);
void fill_array (int a []);
int find_min (int [], int);
int main()
{
int arr[SIZE];
cout << "Arrays: \n";
fill_array(arr);
print_array(arr);
int pos = find_min(arr, SIZE);
int minimum = arr[pos];
cout << "Min is: " << minimum << endl;
cout << "At position: " << pos +1 << endl;
return 0;
}
double random(unsigned int &seed)
{
const int MODULUS = 15749;
const int MULTIPLIER = 69069;
const int INCREMENT = 1;
seed = ((MULTIPLIER*seed)+INCREMENT)%MODULUS;
return double(seed)/MODULUS;
}
void fill_array (int a [])
{
for (int i = 0; i < SIZE; ++i)
a[i] = 0 + (10 * (random(seed)));
}
int find_min (int arr[], int n)
{
int min = arr[0];
int index = 0;
for (int i = 1; i < n; ++i)
if (arr[i] < min)
{
index = i;
min = arr[i];
}
return index;
}
void print_array (int a[])
{
for (int i = 0; i <SIZE; ++i)
cout << setw(3) << a[i];
cout << endl;
}
あなたが何を求めているのかわかりません。 [ask]の質問をお読みください –
オペレータは配列内を再度見て、最小値を見つけて、その値を含むすべてのインデックスを出力します。 – drescherjm
こんにちは、私の質問は次のとおりです。このプログラムでは、find_min関数を編集して位置を出力することができます(最小値が発生する位置の1つの位置(最後の位置)ではなく)。配列は次のとおりです。配列:0 1 8 0 8 8 2 1 1 9 4 1 4 1 9 8 5 4 2 3 最小値:0 ポジション:1 -----これはポジション出力を必要とする場所です次のようになります:1、4 –