Как сделать "позицию" в моем коде более точной?
Я наконец-то закончил этот код для задания, но есть одна проблема: для выходных " позиций:" Я хочу, чтобы он выводил каждую позицию, где происходит минимум. Однако мой код выводит только последнюю позицию минимума в каждом случайно сгенерированном массиве (размер 20).
#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; }
Что я уже пробовал:
Я не понимаю, как добавить больше значений позиции, так как размер массива равен 20, и, несмотря ни на что, минимум будет напечатан как минимум дважды.