Witam.
Potrzebny mi kod w języku C++, który przeprowadzi taką oto operację :
Powiedzmy, że mam tablicę uporządkowanych rosnąco elementów :
indeks : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 11 12... (indeksowanie od 1 a nie od 0 jest celowe i świadome)
liczba : 1, 2, 2, 2, 3, 4, 4, 5, 6, 7, 7, 7...
Program ma za zadanie nadać tym liczbom rangi.
Sposób nadawania rang jest następujący :
Jeżeli liczba w tablicy jest unikalna, np. "1", to jej ranga jest jej indeksem w tablicy, czyli 1
Jeżeli liczby w tablicy się powtarzają, tak jak np. "2", to rangą dla "dwójek" jest średnia arytmetyczna z ich indeksów, czyli w tym wypadku średnia z 3 elementów (bo są 3 "dwójki) z indeksów : (2+3+4)/3 = 3 <- dla każdej "dwójki" ranga będzie wynosiła 3.
Jak napisać program który wykonywałby właśnie taki algorytm ?
Z góry dziękuję za pomoc i pozdrawiam.