1 / 18
Mar 2017

przekieruj wyjście do pliku, a następnie obejrzyj w edytorze hexadecymalnym
ewentualnie chwilę pomyśl o mojej poradzie :slight_smile:

3 years later

Cześć,

Mój problem, tak samo jak poprzednika, jest związany z wyrzucaniem przez sędziego błędnej odpowiedzi, chociaż wszystkie testy jakie wykonałem dawały dobrą. Nie mam pojęcia co może nie działać.
Nawiązując do poprzedniej odpowiedzi sprawdziłem również w pliku w edytorze hexadecymalnym i niczego błędnego nie zauważyłem. (chyba, że źle patrzyłem)

Tu kod: https://ideone.com/nmQnwI13

Nie musisz sprawdzać tak dużych testów, chyba, że tylko chciałeś pokazać tutaj, że “solidnie” testowałeś. ;-_
W tym zadaniu są tylko trzy przypadki i test z zadania jest wystarczający do tego aby ewentualnie dostać AC.
W twoim wypadku natychmiast przetestowałbym “odwrócony” test :wink: [uśmiecham się, bo widzę potencjalny błąd w twoim kodzie, więc w razie czego jak nie znajdziesz pytaj śmiało].

5
2
1
0
-1
-2

PS
Możliwe, że się pomyliłem, więc jeszcze najpierw przetestuję twój kod.

Tak, pomyliłem się, bo masz moim zdaniem, trochę po bałaganiarsku napisany swój kod.

Taki test :wink:
ANDRZEJ
4
1
0
0
2

Dzięki wielkie, wciąż się uczę testowania. To chyba najtrudniejsza czynność w tym wszystkim. :sweat_smile:

Oczywiście jak już wiedziałem co poszło nie tak, to znalazłem błąd.

Przy okazji jak miałbyś chwilę i ochotę, to chętnie przyjmę parę rad na temat porządkowania kodu. :smile:

Linia: if (i > 0) cout << endl; w tym miejscu gdzie jest wprowadza w błąd czytającego. Jest to chytre ale i tak za każdym razemsprawdzasz, czy i > 0 a wiadomo już dawno że jest za każdym razem [gdy już nie jest zerem].
Więc nic nie zyskujesz, a zmniejszasz czytelność.
Czy nie lepiej robić tego sprawdzania na końcu pętli?:
if (i < ile - 1) cout << endl;?

Jeżeli piszesz tylko “dla” kompilatora i dla siebie i jest AC to ok, ale jeżeli jest błą to lepiej mieć jasny i czytelny kod.

Czemu masz traki zagmatwany? Pewnie chciałeś uniknąć powtórzeń kodu, ale dzięki temu bardziej zagmatwałeś.

Zrezygnuj ze swojej “chytrej” funkcji rewerse, można się tu bez niej obejść.

Czyli prosto jak cep [w końcu komputer lubi prosto i jasno]"

wczytujemy
jeżeli skala == 0 od razu wypisujemy
jeżeli dodatgnia
    w petli od zera do dlugosci
        wypisujemy litere
        spacej x skala-1
else [jeżeli skala ujemna
     w petli od dlugosci do 0
     wypisujemy litere
     spacje x |skala| -1

Wydaje mi się że to byłoby bardziej czytelne. Ewentualnie wypisywanie spacji, mógłbyś zastąpić funkcją lub wcześniej “budować” string ze spacji o odpowiedniej długości.

Reszta jest milczeniem :wink: ale jak jest Ac to ok, brawo.

Tę funkcję reverse akurat przekopiowałem z programu, który napisałem wcześniej (dlatego też lubię sobie to tak dzielić). Mimo wszystko muszę przyznać, że masz rację i tak jak ty to rozpisałeś, to dużo lepiej wygląda. :sweat_smile:

Coś takiego miałeś na myśli? To jest czytelne?

https://ideone.com/1Fc8Ak16

To ma być czytelne w pierwszej kolejności dla Ciebie, i chyba tak jest?

Jestem przeciwnikiem nadmiarowych nawiasów i jak chcesz mogę Ci na priv wysłać mój poprawiony kod - pierwotny miał parę nadmiarowych klamr :wink:

Możesz podesłać, zawsze jakieś nowe doświadczenia :stuck_out_tongue:. Ja zazwyczaj preferuję wytabowane wszystko, jakoś łatwiej mi wtedy ogarnąć odkąd dokąd jest pętla, ale to pewnie kwestia ilości przeczytanych kodów. :smile:

11 months later


Mam ten sam problem co inni powyżej, nie mogę znaleźć testu dla którego podaje zły wynik. Cały czas wyskakuje błędna odpowiedź.

“Na wyjściu nie mogą się pojawić zbędne spacje i znaki końca linii.”

Mam wrażenie, że to u Ciebie nie jest spełnione

Wydaje mi się że to rozwiązało ten problem jednak dalej nie akceptuję, masz może jeszcze jakiś pomysł?

Teraz nie mam czasu, zresztą wcześniej też popatrzyłem bardzo pobieżnie, może popatrzę na to w weekend. Prawdopodobnie ktoś wcześniej Ci pomoże.

Niestety nie poprawiłeś tego na co Ci zwróciłem uwagę:
“Na wyjściu nie mogą się pojawić zbędne spacje i znaki końca linii.”

Po lekkim zmodyfikowaniu Twojego kodu uzyskałem AC

1 year later

Mała podpowiedź, jako że mam wrażenie iż nie wynika to z treści zadania, znak końca linii powinien znaleźć się pomiędzy kolejnymi odpowiedziami, a nie jak to standardowo bywa na końcu każdej odpowiedzi.

o co ci chodzi ? Normalnie, wyświetlasz odpowiedź i przechodzisz do następnej linii

Poprawna odpowiedź na przykładowe wejście:

L A T K A R F\nLATKARF\nL\nFRAKTAL\nF R A K T A L

Błędna odpowiedź na przykładowe wejście:

L A T K A R F\nLATKARF\nL\nFRAKTAL\nF R A K T A L\n

a, chodzi o to że na końcu entera ma nie być? Powiedziano że nie ma być zbędnych spacji i znaków nowej linii ale faktycznie łatwo to przegapić.