Witam,
Zacząłem pisać program, mający za zadanie pokazać kolejno: najmniejszy, średni i najwiekszy element tablicy. Rozpocząłem od najmniejszego, i napisałem działającą w innym przypaku (sortowanie przez wstawianie) funkcje, która jednak odmawia posłuszeństwa.
#pragma region Find the lowest value
int findMinimum(int tab[], int size, int index)
{
int actual_index = index; //zmienna actual_index to wartość iteratora z funkcji minimum(), potem posłuży jako wartość najmniejsza
for (int i = index + 1; i < size; i++)
{
if (tab[i] < tab[actual_index]) //porównywanie wartości, iteratora właściwego(pierwszy elemant to 0), a tego powiększonego o 1
{
actual_index = i;
//tutaj iterator z funkcji minimum(), otrzymuje nową wartość - indeks elementu i(tego powiekszonego o 1), który okazał się być mniejszy
}
}
return actual_index; //zwracanie funkcji minimum() indeksu najmniejszego elementu w tablicy
}
void minimum(int tab[], int size)
{
int index;
for (int i = 0; i < size; i++)
{
index = findMinimum(tab, size, i);
//nadanie zmiennej index indeksu najmniejszego elementu tablicy
}
print(tab, index); //ta funkcja to po prostu cout << tab[index] << endl;
}
#pragma endregion
Oto fragment kodu, a problem polega na tym, że pętla w funkcji findMinimum() nadpisuje wartość actual_index na i, pomimo, że if nie jest spełniony. Wyknonuje się ona do końca, nadpisując zmienną, co się kończy tym, że w konsoli ukazuje się ostatni element tablicy...
Nie mam zielonego pojęcia o co chdzi, ale pewnie popełniłem jakiś ordynarny błąd, którego nie zauważam.
Dziękuję, więc z góry za odpowiedzi!