niby jak sprawdzam na przykładach to działa ale sedzia wywala błąd odpowiedzi
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;
}
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;
}
Witam,
Czy ktoś może powiedzieć dlaczego jest źle?
http://ideone.com/eUJMzJ99
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?
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?
Cześć koledzy, mam problem z zadaniem flamaster, dobrze działa dla przykładu, wszystko posprawdzałem i dalej błąd odpowiedzi ;c
pomocy ;c
- 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 - 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ą.
Również mam problem z tym zadaniem: wg mnie działa wg SPOJa nie 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