COmme le dit si bien mon ami GCC (un très compilateur ), il reste deux petits "problèmes":
main.c: In function ‘calculuser’:
main.c:91: warning: ‘return’ with no value, in function returning non-void
main.c:110: warning: ‘return’ with no value, in function returning non-void
Pour inverser le résultat il faudrait sauvegardé chaque étape dans une liste (chainée ou une pile)

Effectivement, par besoin de str_result, à part pour faire l'inversion des resultat, on pourrait trouver une méthode (barbare )

Pour best_gap c'est une histoire d'algorithme.