Witam.
Jestem w trakcie tworzenia projektu na studia z budowy i analizy algorytmów. Uprzedzam więc, że algorytm mam gotowy, więc nie chodzi mi o pomoc przy wykonywaniu projektu. Mam za to dość ciekawy problem z kodem realizującym ten algorytm.
Otóż napisałem funkcję, która w zadanej tablicy jednowymiarowej odnajduje element o najwyższej wartości, a następnie zlicza ilość jego wystąpień. Funkcja prezentuje się następująco:
int maxCounter(int *table, unsigned int tableSize)
{
int max, counter = 0;
for(int n=0; n<tableSize; n++)
{
if(table[n]>max)
max = table[n];
}
for(int n=0; n<tableSize; n++)
{
if(table[n]==max)
counter++;
}
return counter;
}
Wywołuję więc funkcję i zadaję jej jakąś tablicę. W wyniku otrzymuję zero :) Postanowiłem przeanalizować działanie algorytmu i w drugiej pętli wewnątrz instrukcji warunkowej, dodałem
std::cout << table[n] << "\n";
coby sprawdzić, czy instrukcja warunkowa w ogóle wykonuje się. Po skompilowaniu programu nagle okazało się, że wszystko działa. Tak więc moje pytanie - co jest przyczyną takiego egzotycznego działania programu? Czyżby kompilator coś namieszał (g++ 4.9.2), czy może zwyczajnie ja coś spierdzieliłem? :) A jeśli tak, to co?