Podział ciągu liczbowego wg kryteriów

Podział ciągu liczbowego wg kryteriów
L8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 99
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.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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?

Kopiuj
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.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
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.

L8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 99
0

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

Kopiuj
for (a = 0; a < elem; a++){
            if (tablica[a] == 1){
                licznik = licznik + 1;
            }
        }
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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:

Kopiuj
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.