Podział ciągu liczbowego wg kryteriów

0

Witam,

Szukam rozwiązania problemu z podziałem ciągu liczbowego wg określonych kryteriów. Mam tu na myśli konkretny przykład, czyli załóżmy, że mamy ciąg liczbowy o 30 elementach, złożony z liczb od 1 do 10. Chcemy z tego ciągu wyłuskać elementy jednakowe i umieścić je w osobnych ciągach, czyli takich ciągów będzie 10. Wygenerowałem sobie taki ciąg i teraz próbuję jak najprościej do tego podejść, ale odbijam się od ściany :( Chciałbym to zrealizować za pomocą jakiejś pętli warunkowej sprawdzającej kolejne elementy ciągu i dzielącej go na kawałki.

Będę wdzięczny za wszelkie wskazówki.

0

Ale czemu niby takich ciagów ma być akurat 10? o_O No i skoro maja mieć jednokowe elementy to czemu ich po prostu nie policzysz?

counts = [0]*(max(data)+1)
for x in data:
  counts[x]+=1
print(counts)

Jeśli zakresy są większe albo elementy niezbyt blisko siebie to to samo ale z mapą int -> int zamiast tablicy do zliczania.

0

Wpierw policz ile razy poszczególne liczby występują w ciągu, a potem utwórz odpowiednie ciągi. Jeśli np. liczba 5 występuje cztery razy, to utworzysz ciąg (tablicę, kolekcję) zawierający cztery piątki.

0

OK, mam taki kod, który zlicza same jedynki (i nawet działa). Jak teraz zrobić z tego ciąg?

for (a = 0; a < elem; a++){
            if (tablica[a] == 1){
                licznik = licznik + 1;
            }
        }
0

@Lucas83 o_O ty chyba nie bardzo rozumiesz o czym piszemy. To INDEKS w tablicy ma określać liczbę, a nie WARTOŚĆ. Wartość w tablicy określa "licznik wystąpień".
Jeśli elem = 1 to tablica[elem] to w rzeczywistości tablica[1]. Jeśli zrobisz:

int tablica[max] = {};
for (i = 0; i < n; i++){ 
    tablica[ciag[i]]++;
}

przy założeniu że masz tablice ciag o n elementach, to teraz pod k-tym indeksem w tablicy masz informacje o tym ile liczb k wystąpiło w ciągu.
Na przykład tablica[7] powie ci ile 7 wystąpiło w ciągu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1