28 / 30
May 2021

Dzięki za odpowiedź. Przyznaje się, chciałem pójść na łatwiznę z twardo zapisanymi miejscami w stringu ale ciekawi mnie skąd błędna odpowiedź skoro wyjście daje to co powinno. Czy sędzia sprawdza też inne dane niż podane w wejściu?

Tak. Sędzia sprawdza wiele przypadkow dobranych przez autora zadania.
Wynik miesci sie w typie int 32bitowym.
Każda z liczb moze miec dlugosc od 1 do 10 cyfr - program musi byc na to przygotowany.

Poprawiłem to w ten sposób że zbiera teraz liczby aż do spacji i dalej wywala błąd który mówi o błędnym wykonaniu, mógłby ktoś zerknąć? Z góry dziękuje:)
link do Ideone: https://ideone.com/JvRBnV12

Wszystko wskazuje na to, że w linijce if (Char.IsWhiteSpace(line, numb + 1)) wychodzisz poza zakres stringa.

2 months later

Czy ktoś mógłby powiedzieć dlaczego sędzia tego nie przyjmuje? :slight_smile:

Wygląda, że jest jakiś błąd na stronie, więc na razie odłóż to zadanie, a rób inne.

Błąd w tym zadaniu i kilku innych, został zgłoszony i jest już poprawiony.

17 days later

W treści zadania jest napisane “Na wejście programu podana zostanie pewna nieokreślona liczba zestawów danych.”, a w przykładowych danych wejściowych jej brak.

Przeciez ich liczba jest nieokreslona. Gdyby byla podana to bylaby okreslona…

OK, źle zrozumiałem.

Tylko w czym tkwi problem:

“Object reference not set to an instance of an object”

Mniej więcej wiem o co chodzi, ale okazuje się, że w tym przypadku “mniej więcej” to zbyt mało.
W Visual Studio błąd nie występuje i wydaje się, że wszystko działa.

Komunikat nie jest rzeczywiscie bardzo przyjazny, ale można sie domyslac, ze czegos nie ma.
O C# nie wiem za dużo, ale podejżewam ze chodzi caly czas o to samo - nieokreśloną liczbę linii.
Co sie stanie gdy na Twojej maszynie zamiast wpisac dane wejsciowe dasz enter.
Czy program jest przygotowany na nieokresloną liczbę linii? (np. 7 albo 97)

Nie znam CSHARP-, ale z treści Twojego kodu domyślam się, że przygotowałeś go na 100 zestawów. W przykładzie, który udostępniłeś dajesz mu 5 zestawów i program się wywala, bo brakuje mu ich jeszcze 95. Gdy w pętli w Twoim kodzie licznik ustawiłem na 5 wszystko poszło dobrze. Po prostu jak napisał pawoj20, program NAPRAWDĘ musisz przygotować na NIEOKREŚLONĄ liczbę danych. Wiem, jak to zrobić w C++, w CSHARP Ci nie pomogę

Tak jak w każdym języku można to zrobić na 1000 i jeden sposobów, tak i w c# też można.

W C++:

string linia;
while (cin >> linia)

Oczywiście powyższy sposób w c++ jednak nie zadziała.
w C++, możn np tak:

while (cin >> symbol >> liczba1 >> liczba2) 

W twoim wypadku, możesz np sprawdzić co wczytałeś i jeżeli (s == null) to przerwać pętlę - break;
No i pętla powinna być nieskończona np while (true).

Możesz też od razu w pętli sprawdzać:

while ((s = ConsoleReadline.....) != null) {
    ....

I wtedy nie potrzebujesz już pętli for (…100 …)
Można też wpisać odpowiednie hasło - najlepiej in English - do googli i znaleź inne, może lepsze te pozostałe 999 sposoby.

Wystarczył if (s==null) break;
Pętla nie musiała być nieskończona.

Dzięki wszystkim za pomoc:)

1 year later

Witam, chciałbym aby ktoś mnie nakierował jak zrobić aby wyjście zostało wyświetlone na końcu programu a nie podczas jego działania. Czy mam użyć tablic,czy da się to zrobić bez ich użycia.
Dziękuje z góry za odpowiedz

Zależy czy pytasz ogólnie, czy pod kątem rozwiązywania zadań na spoju?
Za każdym razem, jak wywołujesz endl wszystko co zostało wysłane na ekran zostanie wyświetlone. Zamień endl na " " to zobaczysz różnicę.

Jeśli jednak pytasz pod kątem spoja, to nie musisz się tym przejmować. Spokojnie możesz wyświetlać wynik zaraz po jego obliczeniu. To nawet lepiej, bo nie musisz tworzyć dodatkowej tablicy do trzymania wyników.

Dodatkowa uwaga: wszystkie komentarze typu: Podaj liczbę, które nie są wspomniane w specyfikacji wejścia lub wyjścia spowodują wynik Błędna odpowiedź.