Witam, jestem nowy na forum. Uczę się od jakiegoś czasu c++ i robiłem proste ćwiczenie. Ale mam problem. Funkcja choose ma zwracać największą wartość.
#include<iostream>
const int ArrSize = 5;
template <typename T>
int choose(T arr[]);
int main()
{
using namespace std;
int InArr[ArrSize] = {1, 9, 54, 20, 40};
double DoArr[ArrSize] = {20.4, 15, 37.2, 80, 73.2};
int maxIn = choose(InArr);
cout << "maxIn = " << (InArr[maxIn]) << endl;
int maxDo = choose(DoArr);
cout << "maxDo = " << (DoArr[maxDo]) << endl;
}
template <typename T>
int choose(T arr[])
{
using namespace std;
int wynik = 0;
int max = arr[0];
for(int i = 1; i < ArrSize; i++)
{
if (arr[i] > max);
{
cout << arr[i] << " > " << max << endl;
max = arr[i];
wynik = i;
}
}
return wynik;
}
Funkcja zawsze zwraca ostatnią, a nie największą liczbę. Sprawdziłem, że warunek
if (arr[i] > max)
jest spełniany przez każdą parę liczb (np. 20 > 40 to true). Co zrobiłem, źle? Czy to ze względu na szablon?
Z góry dzięki za pomoc.