14 / 110
Aug 2016

Zamiast modyfikować stringa wypisuj wyniki od razu, wejście i wyjście to 2 różne pliki więc dla sędziego nie ma to znaczenia, a znacznie uprości kod.

niby jak sprawdzam na przykładach to działa ale sedzia wywala błąd odpowiedzi frowning
jakaś porada?

#include<iostream>
#include<string>
using namespace std;
string skrot(string text)
{
int powt = 1;
string tymcz;
tymcz.erase();
int max = (int)text.length();
for (int j = 1; j < max; j++)
{
	if (text[j] == text[j - 1])
	{
		if (powt == 1)tymcz += text[j - 1];
		powt++;
		if (j == (max - 1))
		{

			if (powt == 1)tymcz += text[j];
			else if (powt == 2)
			{
				tymcz += text[j];
			}
			else if (powt > 2 && powt <= 9)
			{
				tymcz += '0' + powt;
			}
			else if (powt > 9)
			{
				tymcz += '0' + powt / 10;
				tymcz += '0' + powt % 10;
			}
			powt = 1;
		}
	}
	else if ( text[j] != text[j - 1] )
	{
		if (powt <= 2) 
		{
			tymcz += text[j - 1];
			
		}
		else if (powt > 2 && powt<=9)
		{
			tymcz += '0' + powt;
		}
		else if (powt > 9)
		{
			tymcz += '0' + powt / 10;
			tymcz += '0' + powt % 10;
		}
		if (j == (max - 1))tymcz += text[j];
		powt = 1;
	}
	
	
	
}

return tymcz;
}
int main()
{
int t;
cin>> t;
string text;

for (int i = 0; i < t; i++)
{
	cin >> text;
	cout<<skrot(text)<<endl;
}


	return 0;
}
13 days later

przydała by się pomoc bo mam cały czas Błędna odpowiedź

Mógłby ktoś mi pomóc znaleźć błąd? Wyskakuje mi błędna odpowiedź.

#include <iostream>
#include <sstream>
using namespace std;

int ile,licznik;
string wyraz;


int main()
{
    cin >> ile;
    for(int i=0;i<ile;i++)
       {
           cin >> wyraz;
    for(int j=0;j<wyraz.length()-1;j++)
    {
        
        if(wyraz[j]==wyraz[j+1])
            licznik++;
            else licznik=0;
        if(licznik>=2 && wyraz[j]!=wyraz[j+2] && wyraz[j-1]==wyraz[j+1])
            {

ostringstream ss;
ss << licznik+1;
string str = ss.str();
           wyraz.replace(j-(licznik-2),licznik,ss.str());
            licznik=0;
            ss.str("");


             licznik=0;
j=licznik;
            }
    }
cout << wyraz<<endl;
       }



    return 0;
}
6 months later

wykonaj ten kod u siebie, z przekierowaniem wyjścia do pliku, a następnie obejrzyj w jakimś edytorze hexadecymalnym - sam zrozumiesz dlaczego jest źle

3 months later

Cześć,
powie mi ktoś, czemu mój spoj nie akceptuje mojego kodu?

usuwam link, bo wyjaśnione

Zgubiłeś literę Q - alfabet amerykański taką posiada.

26 days later

Powie mi kto co jest źle w tym kodzie, przechodzi testy poprawnie a SPOJ wywala mi "Błędna odpowiedź".

include

include

include

using namespace std;
int C;
void skracanie(string w)
{
char l;
int dlugosc=w.length();
int ile;
string iles;
string w2;
for(int i=0; i<dlugosc; i++)
{
ile=0;
l=w[i];
while(w[i]==l)
{
ile++;
i++;
}
i--;
if(ile==1) w2=w2+l;
if(ile==2) w2=w2+l+l;
if(ile!=1&&ile!=2)
{
stringstream ss;
string str;
ss << ile;
ss >> iles;
w2=w2+l+iles;
}
}
cout<<w2<<endl;
}
int main()
{
cin>>C;
string wyraz;
for(int i=0; i<C; i++)
{
cin>>wyraz;
skracanie(wyraz);
}
return 0;
}

PS
Jak się dodaje kod?

Cześć,

Zabrzmi to dziwnie - ale wrzuciłem Twój kod na spoja i przeszedł mi na zielono... (icludy dodałem sobie aby się kompilowało bo tu coś się nie wkleiły).
Wiec proszę Cie o zedytowanie swoje posta i usunięcie kodu.

Większość osób wrzuca kod na ideona i na forum wkleja link do tego kodu. Tu opis:

2 months later

Witam.
Nie chce śmiecić nowym tematem, więc podłącze się do tego.
Mam problem bo gdy sam sprawdzam swój program wszystko wydaje się być ok, ale SPOJ nie chce mi zatwierdzić.
Mógłby ktoś rzucić okiem?

znalazłem_błąd.dzieki62

1 month later

Cześć
Też mam problem z tym zadaniem.
Wydaje się że jest ok ale pisze zła odp.
Mógł by ktoś podpowiedzieć co jest nie tak?

Program naprawiony :slight_smile:

1 month later

Wrzuciłem Twój kod na ideone z testem spod zadania. Jak tam wejdziesz to od razu zobaczysz jak bardzo się różni twój out od tego pod zadaniem.

2 months later
  1. Nie twórz nowych wątków, gdy już takowe istnieją (ich ilość mnie przeraziła) i w pierwszej kolejności przeczytaj je wszystkie.
    http://discuss.spoj.com/search?q=flamaster
  2. Jak chcesz pokazać swój kod, to wklej go na ideone, a na forum daj link, znajdziesz na pewno większą ilość potencjalnych osób które ci pomogą.

Dorzuciłem Twój post do istniejącego wątku.

Co do zadania program działa niepoprawnie dla zlepków liter dłuższych niż 99 znaków.

dzieki wielkie juz dziala :smiley: jakby kogos interesowalo to pomylilem liczbe setek

17 days later

Również mam problem z tym zadaniem: wg mnie działa wg SPOJa nie :wink: podejrzewam, że problem wiąże się z wykorzystaniem komórki stringa o numerze str.length(): nie nadpisuje wartości tej komórki a rozwiązanie wydaje się w porządku, poza tym wydaje mi się, że będzie w niej zawsze ta sama wartość: '/0'- będę wdzięczny za pomoc OKK działa