Witam, mam pytanie pod konkretny przykład, mam tablice n elementowa, zalozmy ze będzie to 5 elementow gdzie wprowadzone zostaje {1,3,1,4,2}
chciałbym żeby wypisywalo mi : liczba 1 wystepuje 2 razy, liczba 3 - 1 raz, liczba 4 - 1 raz, liczba 2-1 raz. Napisalem kod, zlicza mi lecz wypisuje liczba 1-2, 3-1, 1-1, 4-1, 2-1. Pytanie, jak można np. pominąć element powtarzający się w tablicy, lub ewentualnie usunąć uzyta już liczbe. Odpada sortowanie.
0
0
#include <map>
#include <iostream>
using namespace std;
int main(){
int tab[] = {1, 3, 1, 4, 2};
map<int, size_t> occurs;
for(auto item : tab)
occurs[item] += 1;
for(auto pair : occurs)
cout << pair.first << ": " << pair.second << endl;
}
0
będę w bledzie jeżeli powiem ze w c z takimi zabawkami ciężko ?
1
O ile znasz zakres liczb (i nie są to jakieś gigantyczne przedziały) to dokładnie ten sam algorytm można łatwo powtórzyć w C.
Z tym że algorytm od @spartanPAGE ma złożoność O(n*log(n)) (po zamianie map na unordered_map - O(n)), zaś twój (który jeszcze nie działa) ma złożoność O(n2)
Dodaj do swego kodu warunek: - jeżeli liczba występowała w tablice wcześniej to ją pomiń w zliczaniu i wyświetleniu - to zacznie działać.