21 / 47
Mar 2018

Dzien dobry. Mam problem ze wspomnianym w tytule zadaniem. Na poczatku sprawdzalem kod, ktory dziala dla wszystkich przypadkow ‘poprawnych’ (tzn. nie bierze pod uwage liczb pokroju ‘IM’) i jest w stanie wyswietlic maksymalnie liczbe MM (co powinno wystarczyc, sumowane liczby sa z przedzialu <I,M>):

    	tu byl kod

Po odrzuceniu mojego programu uzylem funkcji znalezionej w internecie, ktora jest w stanie przekonwertowac ‘niepoprawne’ liczby (np. IC):

  tu byl  kod

Nie mam pojecia co moze byc nie tak z tym programem, czy ma ktos jakis pomysl? Ew. czy istnieje mozliwosc uzyskania dodatkowych testow?

  • created

    Nov '17
  • last reply

    Nov '22
  • 46

    replies

  • 3.6k

    views

  • 15

    users

  • 12

    likes

  • 13

    links

dodatkowe testy nie pomogą :slight_smile: - obie funkcje są poprawne (usuń kod z forum)

więc pomyśl trochę, gdzie jeszcze może być błąd

czy ma to zwiazek z niepoprawnym zakonczeniem programu (tzn. nie powinienem uzywac np. cin.eof)??

4 months later

Żeby nie tworzyć nowego tematu, odświeże co nieco topic :wink:

W moim programie wykorzystuje mapy. Udało się jak do tej pory przekonwertować dwie liczby rzymskie na liczby arabskie i zsumować je zapisując wynik w INT. Problem polega na konwersji liczby arab. na rzymską.

W funkcji sprawdzam czy liczba INT jest większa lub równa od wartości z klucza, lecz aktualnie iteracja przebiega po kluczach a nie po wartośiach tak jak ja chcę :rage:. Dodaje ss’y aby rozświetlić bardziej problem. Pomoc mile widziana!!

Bardzo chwalebne, ale to trochę mało :wink:
Pewnie nie domyślisz się, o co mi chodzi [o co biega], więc trochę roświetlę bardziej problem. Należało dokładnie “przestudiować” wątek i zauważyć jeden mankament, jeden brak. Brakuje linku do zadania, ale po co, przecież jest i nazwa zadania i nazwa kodowa. Ok. Pewnie to jakieś proste zadanie w kategorii łatwych. Wystarczy je wyświetlić posortowane wg nazwy lub kodu i już. Po kilku klikach mamy już odpowiednią stronę i widzimy, że jednak nie, nie ma tu tego zadania. Może to więc jednak [wyjątkowo] zadanie z kategorii trudne? Ale najpierw sparawdzę kategorię challenge, jest tylko jedna strona do sprawdzenia, więc tylko jeden rzut “okim” i już wiem, że nie tu. Sprawdzam więc trudne i na koniec, po wielu zbędnych klikaniach, znajduję zadanie w kat. średnich. Teraz chciałbym wiedzieć, jak wyglądały twoje zgłoszenia, ok nie znajduję, ale w sumie nie pisałeś, że zgłaszałeś. Kolej aby się dowiedzieć chociaż trochę o tobie, bo łatwiej wtedy podpowiadać. Więc szukam twojego profilu i sprawdzam aktywność na forum. Okej, mogłem tego wszystkiego nie robić ale jak dasz dużo więcej od siebie, możliwe, że dostaniesz większą pomoc. Przeczytaj na koniec wątek --> Jak zdobyć szacun na SPOJu :wink: [też, “za karę” nie podaję linku].

PS
Oczywiście są inne metody znaleźienia zadania, a jeżeli ciekawy jesteś, po co mi strona z zadaniem, przecież z samego tytułu wątka “widać”, że chodzi o dodawanie rzymskich cyfr, odpowiem, że nie lubię podpowiadać, gdy sam nie mam AC i zostawiam to innym. W tym zadaniu, okazuje się, że mam AC, więc zdobądź tylko trochę szacunu i spróbuję w miarę moich umiejętności podpowiedzieć.

Oczywiście, napisałęm, że są inne metody, ale co jak nie lubię, gdy wyszukiwarka, przy okazji “kolekcjonuje” moje wyszukiwania? No i dopiero na 3 pozycji! :wink:

PS
Wkleiłeś historię swoich wszystkich zgłoszeń. Chodziło mi tylko o status dotyczyący twoich [ewentualnych] zgłoszeń do jednego, danego, zadania :wink: [np mój do zadania liczba na słowo : http://pl.spoj.com/status/JLITOSL,narbej/23 ] Tak naprawdę, jak wkleisz link do swoich zgłoszeń, to już nie musisz wklejać linku do samego zadania, bo z listy zgłoszeń, już tylko jednym kliknięciem mogę przejść do treści zadania. Jeżeli nie masz zgłoszeń, wtedy oczywiście link do zadania jest pomocny.

Na 3 pozycji bo 2 pierwsze pozycje były odnośnikami do tego forum - do tego zadania.
Nie no na pewno warto jest wiedzieć o takich “smaczkach” o których piszesz. Na przyszłość będę wiedział.
Lekko się przyczepie (tak w ramach “odwetu” :smiley: ) ale po co pisać PS skoro nie piszesz listu? Komputer to nie kartka i można w każdej chwili usunąć zbędne zdanie czy wyrazy. Dodanie zdania przed innym zdaniem też jest możliwe bez pisania PS :wink:

Przecież piszę :wink: Tyle, że to jest list otwarty [publiczny] w formie elektronicznej. A PS, czasami [nad]używam wtedy, gdy inni używają edit lub update, a czasami do oznaczenia, że dana myśl[y] są mniej ważne, istotne.

BTW
WAŻNE :wink:
Żebyś nie musiał googlować: --> Jak zdobyć szacun na SPOJu

Nie lubie gdy ktos jest za bardzo nachalny. Prawie natychmiast jak przeczytałem twój poprzedni post sprawdziłem o co chodzi z tym szacunem na spoju. Piękna akcja, piękna sprawa popieram rękoma i nogami. Trochę odbiegamy od tematu… :frowning:

Tak trzymaj, to jest dobra [chyba] droga. Popieram rękoma i nogami, ale że nie lubię się narzucać więc nie będę nachalny. Ja zrobiłbym pewnie inaczej, ale to twój kod, więc chyba wiesz co robisz?

UPDATE
To jest moja lista zgłoszeń do tego zadania: http://pl.spoj.com/status/JSUMRZYM,narbej/39

Liczyłem na pomoc jak mogę iterować po wartościach w mapie, myślę że dalej sobie poradzę… albo jak mogę to inaczej zrobić. Ok narbej, przykleiłeś twoją listę zgłoszeń do tego zadania i … co ja mam z tym zrobić? :slight_smile:

To była tylko taka informacja, że zrobiłem to zadanie. Z tego linku nie wynikło, że zrobiłem to zadanie inaczej, ale tak było.

Jeszcze dwa linki, ale nie pytaj mnie już, co masz z nimi zrobić [pewnie przeczytać i skorzystać, nie mam pojęcia :wink: ]

–>> nie czytałem i nie odpowiadam, za jego jakość :wink: https://stackoverflow.com/questions/5056645/sorting-stdmap-using-value28

–>> czytałem, ale możliwe, że jest za bardzo nachalny jak na twoje poczucie nachalności :wink: Obzartuchy

Dzięki za linki narbej!
Oj uczepiłeś się tego mojego nachalstwa hehe.

Udało mi się zrobić to zadanie za pomocą wektorów (trochę dużo warunków = dużo linijek) tylko że SPOJ wyświetla “błędną odpowiedź”.

Co może być nie tak? :frowning:
http://pl.spoj.com/status/JSUMRZYM,rahrr/36

Drobna [bardzo drobna] poprawka i masz AC. Rozumiesz jednak, że nie mogę jej tu podać, bo stanowiło by to naruszenie zasad forum - nie podajemy działających kodów, a twój kod + poprawka to AC. Ponieważ jest drobna, to powinieneś sam do tego dojść :wink:

PS
Na dowód - twój program z poprawką i AC - ostatnie zgłoszenie: http://pl.spoj.com/status/JSUMRZYM,narbej/24

Myślę, patrzę na ten kod już chyba ze sto razy… nie mogę doszukać się błędu :frowning:
Jakaś podpowiedź tylko na co mam zwrócić szczególną uwagę?

  1. Przestań myśleć
  2. Przestań patrzeć jak [nie pamiętam] na malowane wrota.
  3. Przestań szukać
  4. Zacznij testować.

BTW
Na ideone są trzy okienka, z których dwa można, warto i nawet bardzo wskazane jest aby je wypełnić odpowiednią treścią.

BTW 2
Po AC, nie pisz, że sprawa zamknięta, czy jakoś tak. Najlepiej już, jak w takim wypadku nic nie napiszesz, a po prostu możesz coś zrobić. Nawet kilka rzeczy, ale może się domyślisz? :wink:

Tak wiem :wink: dobrze byłoby gdybym miał szacun na spoju! hehe
testuje i wszystko co wpisze w inputa to wypluwa prawidłowy wynik :thinking:

Masz na myśli:

"Success #stdin #stdout 0s 4260KB "
+
“Standard input is empty”
+
“Standard output is empty”
!? :wink: , że się tak uśmiechnę pod wąsem.

Można testować też w konsoli, ale niezależnie jak i gdzie, wskazana jest wiedza na temat stdin, stdout, oraz o przekierowaniach. Dodatkowo, warto wiedzieć, że jest też stderr.

Nie. Mam na myśli np. to ->
Gdzie input to np. XLVI CCCLXIX, output zaś CDXV co jest prawidłowym wynikiem

“Na wejściu w pojedyńczych wierszach podawane są …”

podawane != podane

na ideone:
stdout
tylko III
to trochę za mało

Będę na przyszłość pamiętał o tym faktycznie małym ale istotnym drobiazgu :wink:

4 months later

To ja może również odświeżę temat, aby nie tworzyć nowego.

Mój program niby pokazuje dobry wynik, ale SPOJ go nie uznaje (błędny wynik). Analizuję go ciągle i nie umiem znaleźć nigdzie błędu i zaczęło mnie to już frustrować :confused:

Napisałby mi może ktoś jakąś wskazówkę, co może być w moim programie nie tak? Byłbym bardzo wdzięczny :slight_smile:

Mój kod54

Tam jest wymagana nieskonczona petla na input. U Ciebie program sie konczy po wprowadzeniu jednej pary liczb.

23 days later

Witam, po przeczytaniu powyższych wskazówek i porad, nadal nie przyjmuje mojego kodu:
REMOVED (wypisuje wynik zaraz po wklepaniu 2 liczb)
REMOVED (nowy link. Wypisuje wyniki gdy skończy wczytywać wszystkie dane)

Kod trochę chaotyczny, ale drukuje odpowiednie liczby. Powinienem uwzględnić złośliwe zestawy testowe (sprawdzałem skrajne wartości czyli M + M oraz I + I)? :stuck_out_tongue: Może coś przeoczyłem?

No tak nie przemyślałem jednego warunku :smiley: Wielkie dzięki! Teraz zaakceptowało.

1 year later

Witam, żeby nie zaśmiecać forum piszę tutaj. Mam problem z owym zadaniem:
Link: https://pl.spoj.com/problems/JSUMRZYM/9
Język C++, kod: Tu był kod. Kod zdaje się podawać poprawne wyniki, ale na “zdawaniu się” niestety się kończy. Spoj wyrzuca mi WA i nie mam pomysłu w którym miejscu popełniam błąd, byłbym wdzięczny jeśli ktoś z większym doświadczeniem naprowadzi mnie gdzie go szukać, dodatkowo z racji małego stażu w programowaniu chętnie przyjmę trochę krytyki odnośnie jakości kodu lub możliwości jego usprawnień. Z góry dzięki za pomoc;)

A czy program nie powinien obliczac nieokreslona liczbe dodawan? (ja tego zadania nie robilem jeszcze - ale tresc zadania troszke jest niejednoznacznia, test umieszczony pod zadaniem na to wskazuje)

Tak jak pisałem to nie moja sprawa, ale mimo wszystko zwracam honor @hipcia. Dzięki za chęci i za pomoc.

6 months later

Witam

Przed chwilą dostałem AC dla tego zadania. Od samego początku miałem prawidłowo działający algorytm, ale dopiero za 4 podejściem sędzia mi go zaliczył. Czy naprawdę musimy marnować godziny na detale typu spacje czy ilość wczytywanych danych ? Autor zadania pisze że "na wejściu w pojedynczych wierszach wczytywane są dane. Zatem pomyślałem sobie że dane należy wczytać tylko raz:
cin>>str1>>str2;
dopiero potem domyśliłem się że chodzi o wczytanie nieokreślonej ilości danych i zmieniłem to na:
while(cin>>str1>>str2).

Czy naprawdę administratorzy/moderatorzy serwisu nie mogą wyedytowac treści zadania tak aby jasno mówiła o co chodzi. Sorry ale musiałem… ciśnienie ze mnie zeszło.

Hmm, wydaje mi się, że jest to jeden z elementów gry - zrozumieć intencje autora. SPOJ to nie jest zbiór zadań z matematyki. Myślę, że jeśli tylko autor nie wprowadza w błąd to wszystko jest ok. Z treści zadania nie wynika czy test będzie jeden czy więcej, ale przykład pod zadaniem to ujednoznacznia. W tym zadaniu jest wszystko jasne, są chyba zadania, gdzie się trzeba więcej nagłówkować by zrozumieć intencje autora. Poza tym trzeba pamiętać o nadrzędnej zasadzie, którą zrozumiałem wiele lat temu (być może ktoś wymyślił to wcześniej - nie będę się spierał o pierwszeństwo… :slight_smile: ). INFORMATYKA JEST NAUKĄ DOŚWIADCZALNĄ.
Doświadczenie pokazuje czy dobrze coś zrozumiałem i wykonałem :wink:

17 days later

Cześć mam problem z zamianą liczb Arabskich na rzymskie używam mapy, a w pętli while dzielenia modulo ale na przykład dla liczby 19 wyrzuca mi “XX” nie wiem gdzie popełniam błąd za naprowadzenie dziękuje

Bardzo ciekawy błąd.
Tworząc mapę int-string używasz apostrofów zamiast cudzysłowów.
liczbaArabskaRzymska[1] = ‘I’;
zamiast
liczbaArabskaRzymska[1] = “I”;

Dla pojedynczych znaków może i to spoko, to dla podwójnych znaków
liczbaArabskaRzymska[900] = ‘CM’;
to już jest bez sensu. Nie ma znaku ascii ‘CM’. Możemy tylko zgadywać, co trafiło do mapy.

Włącz sobie warningi podczas kompilacji (albo zwracaj na nie uwagę). Na ideone od razu pokazało, że coś jest nie tak.

Dziękuje Ci bardzo za pomoc i wskazówkę , będę bardziej zwracał uwagę na warningi