Okej, to może ja po kolei:
- deklaracja tablic jest zła
Nie chodzi o to, że konstrukcja jest zła - bo jest dobra - ale o miejsce deklaracji. Następuje ona jeszcze przed podaniem wartości zmiennej 'ile' przez użytkownika, przez co tak naprawdę nie wiesz ile elementów będzie miała tablica, bo deklaracja będzie miała miejsce wcześniej, a co za tym idzie zmienna 'ile' może mieć w sobie różne liczby - od ujemnych, do małych, aż po wielkie liczby. Ten błąd sprawia, że Twoje tablice mogą w ogóle nie powstać (jeśli zmienna 'ile' będzie o wartości ujemnej), może mieć za mało elementów, albo może być za duża - innymi słowy masz bardzo małą szansę, że będzie taka, jak powinna być. Ostatecznie przez taki mały błąd może wystąpić masa problemów, na przykład w wypadku małej liczby elementów, mniejszej od ilości podanej przez użytkownika, po prostu zaczniesz nadpisywać dane w pamięci poza obrębem Twoich tablic. Albo na przykład użytkownik poda, że wpisuje 5 liczb, a program uprzednio zadeklarował 10000 miejsc.
Jest ich zwyczajnie za dużo :) Rozumiem, że się uczysz i są to Twoje początki, dlatego też warto od razu powiedzieć sobie kilka rzeczy. Pierwszą rzeczą jest to, że nie powinno się tyle komentować. Ogółem przyjmuje się, że jeśli musisz tyle komentować, to robisz coś źle :D Kod powinien być na tyle rozbity i prosty, że komentarze powinny być zbędne. Pewnie, zdarzy się, że jest coś dziwnego lub zawiłego i trzeba wsadzić tam komentarz, żeby czytający nie główkował się godziny myśląc "co autor miał na myśli". Ale w tym wypadku nie ma sensu robić komentarzy typu "//wypisywanie tablicy" czy "//porównywanie zwróconej reszty bezwzględnej z różnicy liczby obecnej, do reszty bezwzględnej z różnicy liczby najbliższej średniej". Widzisz, jakie to długie? A widzisz, że to całkiem zbędne, bo wystarczy popatrzeć na kod? :)
Algorytm chyba okej, ale pewnie sam próbowałbym inaczej, choćby ze względu na ostatnią pętlę for, która wykonuje się nadmiarową ilość razy w pewnych przypadkach.