[C]Zliczanie elementów w tablicy dwuwymiarowej.

Michal99
Użytkownik
Użytkownik
Posty: 95
Rejestracja: 12 wrz 2010, o 17:27
Płeć: Mężczyzna
Podziękował: 49 razy

[C]Zliczanie elementów w tablicy dwuwymiarowej.

Post autor: Michal99 »

Witam. We fragmencie mojej pracy domowej muszę zliczyć liczby w tablicy dwuwymiarowej. Wiem jak rozwiązać ten problem, gdy mam szukaną liczbę na dłoni (np. policzyć, ile jest "5" w tablicy AxB). Nie mogę wpaść na pomysł, jak rozwiązać ten problem, gdy muszę wyświetlić wszystkie liczby z przedziału <0, 10> Przecież nie będę robił tego używając if'ów. Proszę o pomoc.
Andreas
Użytkownik
Użytkownik
Posty: 1130
Rejestracja: 1 lis 2008, o 22:33
Płeć: Mężczyzna
Podziękował: 72 razy
Pomógł: 156 razy

[C]Zliczanie elementów w tablicy dwuwymiarowej.

Post autor: Andreas »

Może

Kod: Zaznacz cały

if (a>=0) && (a<=10)
?
Michal99
Użytkownik
Użytkownik
Posty: 95
Rejestracja: 12 wrz 2010, o 17:27
Płeć: Mężczyzna
Podziękował: 49 razy

[C]Zliczanie elementów w tablicy dwuwymiarowej.

Post autor: Michal99 »

Przepraszam, moja wina. Powinienem napisać bardziej przejrzyście o co mi chodzi. Otóż mam napisać program, który dla tablicy dwuwymiarowej AxB wygeneruje pseudolosowo elementy tablicy z zakresy <0, 10>, wyświetli jej zawartość z podziałem na kolumny i wiersze, oraz obliczy ile razy każda liczba występuje w tablicy, wyświetlając tylko te liczby, których ilość jest różna od zera. Tylko to co podkreślone zostało mi do zrealizowania.
Ser Cubus
Użytkownik
Użytkownik
Posty: 1406
Rejestracja: 6 maja 2012, o 22:46
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 107 razy
Pomógł: 145 razy

[C]Zliczanie elementów w tablicy dwuwymiarowej.

Post autor: Ser Cubus »

Robisz tablice int na 10 elementów, indeks tablicy oznacza liczbę, a wartość przy tym indeksie oznacza ilość wystąpień. Odpalasz pętle iterując po 2 wymiarach Twojej tablicy z losowymi liczbami i zwiększasz wartości o 1 w tej 10-elementowej. Na koniec programu iterujesz po tablicy 10-elementowej i jeżeli wartość jest różna od zera to wypisujesz ile razy dana liczba się pojawiła.
Michal99
Użytkownik
Użytkownik
Posty: 95
Rejestracja: 12 wrz 2010, o 17:27
Płeć: Mężczyzna
Podziękował: 49 razy

[C]Zliczanie elementów w tablicy dwuwymiarowej.

Post autor: Michal99 »

Zrozumiałem o co ci chodzi, ale do tej pory nie wpadłem jak to zapisać. Mogę liczyć na jeszcze jakąś podpowiedź?
lemoid
Użytkownik
Użytkownik
Posty: 199
Rejestracja: 24 maja 2012, o 23:36
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 5 razy
Pomógł: 30 razy

[C]Zliczanie elementów w tablicy dwuwymiarowej.

Post autor: lemoid »

ta zliczająca tablica \(\displaystyle{ [4][2][5]...[3][6]}\)oznacza, że 0 wystąpiło \(\displaystyle{ 4}\) razy a \(\displaystyle{ 9 - 3}\) razy.

Kod: Zaznacz cały

 for(i...)
    for(j...)
        zliczajaca[twojaMacierz[i][j]] += 1;
a jeżeli będą w tej tablicy również inne liczby niż z tego zakresu, to oczywiście

Kod: Zaznacz cały

if( twojaMacierz[i][j] >= 0 && twojaMacierz[i]j] <= 10 )  
Andreas
Użytkownik
Użytkownik
Posty: 1130
Rejestracja: 1 lis 2008, o 22:33
Płeć: Mężczyzna
Podziękował: 72 razy
Pomógł: 156 razy

[C]Zliczanie elementów w tablicy dwuwymiarowej.

Post autor: Andreas »

Potrzebna będzie raczej tablica 11-elementowa, jeśli liczby w twojej macierzy są ze zbioru \(\displaystyle{ \{0,...,10\}}\)
teraz iterujesz po twojej macierzy, sprawdzając jakie tam są liczby po kolei
czyli np.

Kod: Zaznacz cały

int tab[10]; (zadbaj o to żeby w tej tablicy były same zera, np. zadeklaruj globalnie)
dla każdego wyrazu macierzy AxB:
  tab[macierz[i][j]]++;
Jak to czytać? Powiedzmy że i,j wyraz macierzy jest równy 5. Wtedy wartość tab[5] zmieni się z 0 na 1 (zwiększy się o 1).
Michal99
Użytkownik
Użytkownik
Posty: 95
Rejestracja: 12 wrz 2010, o 17:27
Płeć: Mężczyzna
Podziękował: 49 razy

[C]Zliczanie elementów w tablicy dwuwymiarowej.

Post autor: Michal99 »

Dziękuję za pomoc. lemoid już mnie nakierował na rozwiązanie, ale dzięki tobie Andreas zauważyłem, że nie wyzerowałem tablicy, dlatego całe czas miałem kosmiczne wyniki.
ODPOWIEDZ