C++ Program wyświetlający najczęściej powtarzającą się liczbę


(Dennoss) #1

Witam. Jestem totalnym nowicjuszem i chcę napisać program, który wypisze z tablicy najczęściej powtarzającą się liczbę.

 

Kombinuję, kombinuję, ale mi nie wychodzi. Tutaj, co udało mi się stworzyć do tej pory: http://wklej.to/aI7RT

 

Pomożecie to rozwiązać?


(Pone13) #2

Rozwiązaniem jest zastosowanie tablicy haszującej (hash table), co dalej doczytaj…


(Grzelix) #3

Odpowiedzi na tym co raz mnie zaskakują. Ja nie uważam się za początkującego ale odpowiedź powyżej nie wiele mi mówi, tym bardziej nie pomoże początkującemu.

 

@Dennoss jak byś rozwiązał swoje zadania jakbyś miał np 3 tyś różnych liczb i miał do dyspozycji kartkę i ołówek?

 

 

Ja widzę dwa rozwiązania:

1 posortowanie tych liczb i szukanie najdłuższego ciągu takich samych liczb.

  1. utworzenie drugiej tablicy 2 wymiarowej -> w jednej komórce wpisywałbym wartość liczby, a w drugie jest liczbę wystąpień.

 

Jak użyjesz z którejś z powyższych metod to nie potrzebujesz żadnych zaawansowanych obiektów. 


(wojmal) #4

Druga metoda zaproponowana przez grzeliksa wydaje mi się łatwiejsza (choć to subiektywna opinia). Można także w niej zastosować tablicę jedno wymiarową (indeksy będą liczbami, które liczymy, a wartości ilością wystąpień.


(kostek135) #5

Powyższe rozwiązanie jest ok, jeśli przyjmiemy, że wartości tych liczb są małe, ale np. jeśli liczba może być 100.000.000, to słabo to widzę. Ja proponuję rozwiązanie takie jak to pierwsze tylko bardziej ludzkie: http://www.cplusplus.com/reference/map/map/ Ta magiczna struktura danych pozwala wstawić klucz i wartość. Jak łatwo się domyślić kluczem będzie jaka liczba wstąpiła, a wartością liczba wystąpień.