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
Zgadza się. tez tak miałem na początku, na początku myślałem, że to błąd w kodzie ale po jakimś czasie się samo naprawiło (w międzyczasie robiłem reset pc), Proponuje zmienić kolejność błędny wynik wyskakuje nie dla tej konkretnej wartości, tylko dla kolejnych wyrazów wejścia. Lecz zupełnie nie mogę znaleźć jakiegoś błędu.