1 / 7
Jul 2022

Cześć, ktoś mógłby objaśnić jak poprawnie wykonać to zadanie?
Próbowałem już na różne sposoby, z wypisywaniem liczby po wprowadzeniu, bez wypisania…
Robię w C#, w moim kompilatorze działa tj. po wpisaniu kolejnej liczby 42 (przed którą jest inna liczba) program jeszcze raz wyświetla 42, ale po tym kończy pracę. Przeglądałem już pomoce :slight_smile:

  • created

    Jul '22
  • last reply

    Jul '22
  • 6

    replies

  • 520

    views

  • 4

    users

  • 2

    likes

  • 4

    links

Dzięki. Wpisałem poprawnie kod, usunąłem ograniczenie 500. ideone niby pokazuje puste wejście i wyjście, ale na VS działa… A z kolei SPOJ pokazuje błąd wykonania (NZEC)

To ja jeszcze dołożę:

  1. zanim zadamy pytanie, najpierw sprawdzamy, czy dla danego zadania już nie założono wątku.
    No i poza tym dobrze jest podać link do zadania, bo co my niby mamy googlować aby pomóc?

:heart:

Po wejściu w Twój link widzę: "Błąd wykonania #stdin #stdout #stderr 0.04s 21652KB "

  1. Spróbuj chwilowo nie używać Linq. Fajny bajer, sam lubię, ale ten bajer przesłania Ci problem związany z tym zadaniem.
  2. wspomniany problem: jak wczytać w C# nieznaną liczbę danych wejściowych i zakończyć program w momencie gdy dane na wejściu się skończą?

Właśnie przez to sypie Ci się program:

Unhandled Exception:
System.IndexOutOfRangeException: Index was outside the bounds of the array.
  at (wrapper stelemref) System.Object.virt_stelemref_sealed_class(intptr,object)
  at Program.Main (System.String[] args) [0x00021] in <040bbe39cf064244b0bbc308b31b4f51>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.IndexOutOfRangeException: Index was outside the bounds of the array.
  at (wrapper stelemref) System.Object.virt_stelemref_sealed_class(intptr,object)
  at Program.Main (System.String[] args) [0x00021] in <040bbe39cf064244b0bbc308b31b4f51>:0 

Zmienna i w tym kodzie jest między abstrakcją a błędem - rośnie w nieskończoność.

Wskazówka 1)
Console.ReadLine() to dobry pomysł - sam skądinąd tym wczytałem wejście. Najważniejsze pytanie brzmi, co ta funkcja zwraca.

Wskazówka 2)
Nie ważne jak dobry program napiszesz, jeżeli sam każesz zwrócić błąd instrukcją Environment.Exit(1) to nie dziw się, że go otrzymujesz.

Wskazówka 3)
Korzystaj z dokumentacji i sprawdzaj co robią funkcje, których używasz. Twoje błędy są na poziomie osoby skrzywdzonej przez przysłowiowego już Zelenta - robisz coś, co zapewne daje jakiś wynik (cytuję: “(…) ale na VS działa…”), coś się wyświetla, jakieś “kółko się kręci”, coś uzyskujesz i typowy tutorial w takim momencie stwierdza: “Brawo! Umiesz kodować w <język>! Droga do 15k stoi otworem!”. Nie ufaj tutorialom tylko dokumentacji. Używasz funkcji, które faktycznie coś robią (“kółko się kręci”), ale właśnie nie zawsze. I o to “nie zawsze” oraz jego obsługę chodzi w tym zadaniu by uzyskać AC.

Faktycznie, usunięcie Environment.Exit(1) podziałało, wystarczyło to zastąpić zwykłym warunkiem w pierwszej pętli for. Już nie miałem pomysłu i zastosowanie tego Environment było ostatnią deską ratunku czy program przyjmie :). Mimo że ideone wywala błąd, SPOJ już daje AC. Dzięki za pomoc.

Bo na ideone, musisz koniecznie wpisać lub wkopiować test w okienko stdin - wejście. Inaczej dostaniesz komunikat stdin empty.