13 / 30
Jan 2021
1 year later

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.