1. Nie pozostawiaj w kodzie programu fragmentów komentowanych przed publikacją lub zatwierdzeniem w repozytorium.
2. Stosuj sugestywną nazwę funkcji. Nazwa compare() sugeruje porównanie a nie zwrócenie wartości mniejszej z któregoś ze wskaźników. Lepsze było by min lub less... Z compare() ktoś spodziewał by się zwrócenia zestawu [-1, 0, 1] lub [true, false].
3. Twoje compare() można skrócić i podnieść jego czytelność. Oczywiście nie należy przesadzać z operatorem warunkowym ( ? ) ale tu wydaje się usprawiedliwiony.
int less(int* w1, int* w2) {
return ( *w1 < *w2 ) ? *w1 : *w2;
}
4. Jeśli koniecznie musisz używać getchar() do prawidłowej pracy z IDE, proponuję zmienić, uaktualnić lub skonfigurować poprawnie zestaw narzędzi.
5. Na początku nauki proponuję trzymać się wykładni że zawsze kod z if otaczasz nawiasami klamrowymi. Nawet gdy jest tylko 1 linijka. To bardzo ułatwi znalezienie błędu.