• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

zastosowanie tej funkcji

Object Storage Arubacloud
0 głosów
103 wizyt
pytanie zadane 28 stycznia 2020 w C i C++ przez dario Nowicjusz (200 p.)

Mam problem z zastosowaniem tej funkcji.

 

Poniżej mój kod:

#include <iostream>
#include <sstream>
#include <fstream>
#include <string>

using namespace std;

string konwersjaIntNaString(int liczba)
{

    ostringstream ss;
    ss << liczba;
    string str = ss.str();
    return str;
}

int obliczWystapieniaWybranegoZnaku(string wyraz, int pozycjaZnaku)
{
    int iloscWystapien=1;

    if (wyraz.length() > pozycjaZnaku)
    {
        while (wyraz[pozycjaZnaku] == wyraz[pozycjaZnaku+1])
        {
            iloscWystapien++;
            pozycjaZnaku++;
        }
    }
    else
        iloscWystapien = 0;
    return iloscWystapien;
}

string skracanieWyrazow(string wyrazDoSkrocenia)

{
    int dlugosc = wyrazDoSkrocenia.length();
    int iloscWystapien;
    char powtarzajacySieZnak;

    // sprawdzamy czy wystepuja 3 takie same znaki obok siebie
    for(int i=0; i< dlugosc-2; i++)
    {
        if((wyrazDoSkrocenia[i] == wyrazDoSkrocenia[i+1]) && (wyrazDoSkrocenia[i+1] == wyrazDoSkrocenia[i+2]))
        {

            iloscWystapien=obliczWystapieniaWybranegoZnaku(wyrazDoSkrocenia, i);
            powtarzajacySieZnak=wyrazDoSkrocenia[i];

            wyrazDoSkrocenia.replace(i, iloscWystapien,powtarzajacySieZnak+ konwersjaIntNaString(iloscWystapien));

            dlugosc = wyrazDoSkrocenia.length();
        }
    }
    return wyrazDoSkrocenia;
}

int main()
{

    int iloscTestow;
    string wyraz;

    cin>>iloscTestow;

    for (int i =0; i<iloscTestow; i++)
    {
        cin>>wyraz;
        cout<<skracanieWyrazow(wyraz)<<endl;
    }


    return 0;
}

Muszę go przerobić tak, żeby zamieniał na liczby dla n znaków obok siebie anie dla trzech i podawać w funkcji głownej od ilu takich samych znaków obok siebie ma zacząć zmieniać na liczbę.

związane z odpowiedzią na: porównanie n znaków obok siebie warunkiem if

1 odpowiedź

0 głosów
odpowiedź 28 stycznia 2020 przez tangarr Mędrzec (154,860 p.)

Podam ci pseudokod algorytmu rozwiązującego twój problem
 

funkcja dodajDoNapisu(napis, znak, liczba) {
    napis += znak
    napis += zmien_w_napis(liczba)
    return napis
}
funkcja skróćNapis(napis) {
    wynik = ""
    aktualny_znak = napis[0]
    ilosc_wystapien = 1
    
    dla znaków od 1 do N-1 {
        jeżeli znak == aktualny_znak {
            ilosc_wystapien++
        }
        w przeciwnym_wypadku {
            wynik = dodajDoNapisu(wynik, aktualny_znak, ilosc_wystapien)
            aktualny_znak = znak
            ilosc_wystapien = 1
        }
    }
    wynik = dodajDoNapisu(wynik, aktualny_znak, ilosc_wystapien)
}

 

Podobne pytania

0 głosów
2 odpowiedzi 599 wizyt
pytanie zadane 27 stycznia 2020 w C i C++ przez dario Nowicjusz (200 p.)
0 głosów
1 odpowiedź 330 wizyt
pytanie zadane 16 stycznia 2020 w C i C++ przez AlpenGod Nowicjusz (170 p.)
0 głosów
1 odpowiedź 1,836 wizyt
pytanie zadane 18 listopada 2019 w Python przez lijke Nowicjusz (170 p.)

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...