Jak to zrobić (proste)

0

Witam potrzebuję pomocy ogólnie jest to część problemu, który rozwiązuję gorsza część już jest za mną lecz nie mogę wpaść na już mozna powiedzieć "wisienke na torcie" na pewnie bardzo prosty sposób a mianowicie mam tablice np.
2 2 2 2 2 2 2 2 3 3 3 3 5 5 7 11 i zależy mi aby wyświetlić to jako: 2^8 * 3^4 * 5^2 * 7^1 * 11^1 chodzi tylko o zapis (2 do potegi 8 razy 3 do potegi 4 etc).
Nie mogą to być wektory ani żadne komendy z innej biblioteki niż iostream, z góry dzięki za pomoc!

0

Iteruj sobie i zliczaj powtórzenia.

1

No to skoro masz posortowane liczby, to zrób coś w stylu:

int ile_pod_rzad = 0;
int poprzednia = -1;
dla każdej liczby {
  jesli obecna jest rózna niż poprzednia, to wypisujemy poprzednia^ile_pod_rzad oraz ustawiamy ile_pod_rzad na 0
  
  dodajemy 1 do ile_pod_rzad
  ustawiamy poprzednia na obecną
}

i jeszcze trzeba się zająć końcem pętli

0
program("faktycznie proste") to
    liczba licznik = 0;
    liczba aktualna_liczba = 0;
    liczba poprzednia_liczba = -1;

    dopoki pobieram >> aktualna_liczba rob
        jezeli aktualna_liczba != poprzednia_liczba to
            jezeli poprzednia_liczba != -1 to
                wypisz << poprzednia_liczba << "^" << licznik << " ";
            wystarczy;

            poprzednia_liczba = aktualna_liczba;
            licznik = 0;
        wystarczy;

        licznik += 1;
    wystarczy;
    wypisz << poprzednia_liczba << "^" << licznik << " ";
wystarczy;

dla 2 2 2 2 2 2 2 2 3 3 3 3 5 5 7 11 zwraca oczekiwane 2^8 3^4 5^2 7^1 11^1
Pamiętaj tylko żeby skopiować makra z linku poniżej, inaczej prowadzący/nauczyciel nie będzie mógł tego odpalić

https://wandbox.org/permlink/CDyDfQm83g2qanY4

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