To zadanie można spokojnie testować na konsoli, ale lepiej testować przekierowując dane z pliku lub na ideone.com - wklejając nie tylko kod ale także dane wejściowe, ale na ideone.com nie działą cerr:
http://ideone.com/ughQ97149
Ja rozumiem, że ten program jest napisany słabo i można to napisać 1000 razy lepiej. Ale na spoju jestem jakies 2 dni chyba i niewiele więcej programuje (o ile można to tak nazwać).
Założenia podane w zadaniu spełnia mój program i dla każdego 1<=n<=80 pokazuje poprawne dane wyjściowe. Dlatego nie wiem dlaczego mój program nie jest akceptowany... Rozumiem, że byłby komunikat, że przekroczyłem czas kompilacji czy coś. Ale pokazuje mi błąd. A program działa na 100% dla wszystkich n-ów (nie działał dla n=10 ale już działa, wystarczyło edytować pętle "if (n>10)" na "if (n>=10)").
Narbej, tu mnie masz!
Poprawiłem ten fakt i mój kod teraz wygląda tak:
I po wklejeniu do sprawdzenia moim oczom ukazał sie napis: "zaakceptowano".
Dziękuję wszystkim, którzy udzielali sie w temacie. Za jakiś czas, kiedy moje skillsy w pisaniu się zwiększą usiąde do tego zadania jeszcze raz
Pozdrawiam.
W takim razie gratuluję.
Nie powinieneś tutaj jednak umieszczać ani działających [AC] kodów ani linków do nich, nawet gdy są brzydkie jak noc , a przecież teraz już nikt nie będzie analizował co tam zmieniłeś i jak - SPOJ zaliczył więc ok. Co innego, gdybyś pytał jak napisać ładniej i co tam poprawić, ale przecież już Ci odpowiedziłem i ja i simbax [i sam tak planujesz] napisz od nowa, a ten link [nieśmiało proponuję] najlepiej usuń.
Dzień dobry! To mój pierwszy post tutaj Gdyby ktos chciał mi pomóc, byłabym wdzięczna...
Napisałam kod, problem rozwiązuje, w konsoli śmiga.
Niestety sędzia uparcie go nie akceptuje.
Dlaczego?
Domyślam się, że to jakiś problem z wczytywaniem danych?
Pomocy
w złym miejscu odczytujesz wartości Wywal cout'a z maina(), a wstaw go w miejscu funkcji pala palindrom():
pala palindrom(pala adm)
{
if(reverse(adm.liczba)==adm.liczba)
{
cout<< adm.liczba << " " << adm.count<<endl;
return adm;
}
.
.
.
i byłoby na tyle
Ps; Jako tytuł na forum podawaj: nr. tytuł_zadania Pozdrawiam.
@korrohulko Ale właściwie.. dlaczego tak?
O ile się dobrze orientuję - sam programuję stosunkowo krótko - chodzi o to, że w ten sposób jak przekazujesz argumenty do funkcji, to przekazujesz tylko ich kopie (po powrocie z funkcji oryginał, którego próbujesz odczytać poprzez użycie cout tak naprawdę się nie zmienił, zmieniła się kopia, na której pracowałaś w innej funkcji). Żeby pracować na oryginałach, powinnaś przekazać argumenty przez referencję lub tak jak napisał @narbej korzystać z "returna". Jednak return zmienia tylko jedną wartość, natomiast przez referencję lub wskaźniki można operować jednocześnie na kilku oryginałach.
Ja to tak rozumiem ;p Mam nadzieję, że słusznie.
Warto może dodać, że ten błąd - brak drugiego returnu to nie moja zasługa ani spostrzegawczość. Gdy[byś] kompilujesz[owała] swój program z opcją -Wall [warning all - drukuj wszystkie ostrzeżenia], kompilator, dla twojego programu wypisał[by] takie ostrzeżenie:
g++ -Wall twojProgram.cpp
twojProgram.cpp: In function ‘pala palindrom(pala)’:
twojProgram.cpp:41:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
Trzeba więc czytać, to co wypisuje kompilator i starać się zrozumieć, co "on" chce nam "po[dpo]wiedzieć"
Witam chciałby podłączyć się do tematu. Stworzyłem taki oto kod ->`
include
include
using namespace std;
int t, n, liczba, liczba2, licznik;
int tab[10];
int doZmiennej(int *tab, int n);
int doTablicy(int *tab, int liczba);
int main()
{
cin>>t;
for(int i=0; i<t; i++)
{
cin>>liczba;
n=doTablicy(tab, liczba);
while(tab[0]!=tab[n])
{
liczba2=doZmiennej(tab,n);
liczba+=liczba2;
licznik++;
n=doTablicy(tab, liczba);
cout<<liczba<<" "<<licznik<<endl;
}
cout<<liczba<<" "<<licznik<<endl;
licznik=0;
}
}
int doTablicy(int *tab, int liczba)
{
int i=0;
while(liczba)
{
tab[i]=liczba % 10;
liczba/=10;
i++;
}
return i-1;
}
int doZmiennej(int *tab, int n)
{
int i=n;
int x=1;
int liczba;
while(i>=0)
{
liczba+=tab[i]*x;
i--;
x*=10;
}
return liczba;
}
Kompletnie nie mam pojęcia dlaczego to nie działa. Sprawdzając wynik w pętli wszystko się zgadza. Po wyjściu z pętli dla niektórych liczb pokazuje dobrą wartość dla innych jakieś śmieci. Ślęczę już nad tym jakiś czas i nie wiem w czym jest problem. Może ktoś na to rzucić okiem? Pozdrawiam
Witam napisałem program może niezbyt ładny i pewnie możną to rozwiązać dużo łatwiej, ale dopiero zaczynam, a utknąłem i nie wiem co jest źle. W CodeBlocks działa niby wszystko poprawnie, ale już w Ideone.com zamiast pokazywać właściwe wyniki na wyjściu pokazuje wprowadzoną daną i liczbę obliczeń 0.
http://ideone.com/re0leZ41
Ps. Czy jest gdzieś możliwość, już po zaliczenia zadania zobaczenia prawidłowego, w sensie wzorcowego rozwiązania, aby porównać go ze swoim i na przyszłość nie popełniać tych samych błędów, a nauczyć się stosować prostsze rozwiązania?
Z góry dziękuje za pomoc i pozdrawiam.
Witam, program który napisałem przekracza limit czasu. Wyniki które mi się wyświetlają są poprawne. Nie mam zielonego pojęcia co mógłbym jeszcze usprawnić, dlatego wklejam swój kod,z prośbą o pomoc.
kod: http://ideone.com/RTsqbd36