Mój kompilator wywalił przy tym kodzie sporo ostrzeżeń, ale największy wpływ na działanie miały chyba te że porównywanie floatów za pomocą == lub != nie jest bezpieczne (czyli komputer może się w tym przypadku "pomylić"). Zainteresuj się funkcją FABS, podaje ona wynik działania bez znaku czyli np fabs(2 - 5) da wynik 3. Od razu kod ci się skróci, i znacznie uprości.
edit: na przyszłość korzystaj z wyszukiwarki, a w razie potrzeby dopisuj się do istniejących tematów.