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

Flamaster - SPOJ

42 Warsaw Coding Academy
0 głosów
282 wizyt
pytanie zadane 3 lutego 2021 w C i C++ przez Rainbow99 Początkujący (430 p.)

Znowu mam problem, że mój program działa w konsoli, ale SPOJ go odrzuca. Co może być nie tak?

#include <iostream>
#include <string>

using namespace std;

int testy, dlugosc, licznik;
string napis;

void skracanie(string n, int d)
{
    for (int j=0; j<d; j++)
    {
            licznik=0;
            if(j==d-1)
                cout<<n[j]<<endl;
            else
            {
                if((n[j+1]!=n[j]) && (n[j+2]!=n[j]))
                    cout<<n[j];
                else if((n[j+1]==n[j]) && (n[j+2]!=n[j]))
                {
                    cout<<n[j]<<n[j+1];
                    j+=1;
                    if(j==d-1)
                        cout<<endl;
                }
                else
                {
                    int k=0;
                    while (n[j+k]==n[j])
                    {
                        k++;
                        licznik+=1;
                    }
                    cout<<n[j]<<licznik;
                    j+=k-1;
                    if(j==d-1)
                        cout<<endl;

                }
            }
    }
}

int main()
{
    cin>>testy;
    for (int i=0; i<testy; i++)
    {
        cin>>napis;
        dlugosc=napis.length();
        skracanie(napis, dlugosc);
    }
    return 0;
}

 

komentarz 4 lutego 2021 przez j23 Mędrzec (195,240 p.)

Po co przekazujesz długość stringa w parametrze, skoro i tak przekazujesz obiekt, który tę wartość w sobie zawiera?

Do przemyśleń:

void skracanie(const std::string &s) 
{
    for (int i = 0; i < s.size();) {
        char c = s[i];
        int j = i;
        while(j < s.size() && c == s[j]) ++j;
        std::cout << c;
        if(j - i > 2) std::cout << j - i, i = j;
        else ++i;
    }
    
    std::cout << '\n';
}

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 492 wizyt
pytanie zadane 10 listopada 2020 w C i C++ przez Karington Nowicjusz (120 p.)
0 głosów
1 odpowiedź 648 wizyt
0 głosów
1 odpowiedź 100 wizyt
pytanie zadane 3 grudnia 2024 w C i C++ przez lisek123 Nowicjusz (120 p.)

93,385 zapytań

142,383 odpowiedzi

322,540 komentarzy

62,745 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...