Суть программы такова: нужно записать в массив minimumArray пять минимальных элементов массива yourArray, добавляя при этом в массив busyI значения i из цикла, которые уже были использованы и при проверке переходить к следующему значению i при вызове функции из main.
Программа работает правильно, но если нулевой элемент массива yourArray является одним из пяти минимальных элементов, то i = 0 циклично добавляется в busyI, и я не особо понимаю почему. Возможно ли как-то пофиксить этот мой "чудо"-код?
P.S. знаю, что можно это сделать все намного проще - через ту же сортировку, но мне захотелось так, поэтому прошу не переписывать полностью весь код, используя какой то другой метод, а указать на ошибки, которые нужно исправить.
const int lengthArr = 10, lengthArr2 = 5;
int yourArray[lengthArr], minimumArray[lengthArr2], busyI[lengthArr2] = {-1, -1, -1, -1, -1};
static int arrTwo = 0;
//функция заполнения массива yourArray рандомными числами
void writeMinimum(int arr[], int arrI[]) {
int minI = 0, min1 = arr[minI], breakVar = -1;
for (int i = 0; i < lengthArr; i++) {
for (int k = 0; k < arrTwo; k++) {
if (i == arrI[k]) {
breakVar = i;
break;
}
}
if (breakVar == 0) {
break;
}else if ((arr[i] < min1) && (i != breakVar)) {
min1 = arr[i];
minI = i;
}
}
arrI[arrTwo] = minI;
minimumArray[arrTwo] = min1;
arrTwo++;
}
int main()
{
// Вызов функции заполнения массива
for(int i = 0; i < lengthArr2; i++){
writeMinimum(yourArray, busyI);
}
system("pause");
return 0;
}