Cześć, mam problem z zadaniem ze SPOJ.
Na wejściu programu będzie nieokreślona bliżej liczba liczb.
Mój program musi je wszystkie dodać.
Nie wiem jaki warunek dać w pętle while, aby program rozpoznał że liczby się skończyły i należałoby skończyć również działanie programu.
Są bardzo łatwe rozwiązania tego problemu w c++ jednak na poszukiwanie czegoś w c# straciłem już pare godzin :C
Na wejściu w sensie gdzie? W argumentach w linii poleceń czy na wejściu konsoli?
Na wejściu konsoli.
Może to (nieokreślona liczba testów) będzie przydatne http://213.192.104.217/phpBB3-spoj-pl-backup/viewtopic.php?f=10&t=1208
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace App
{
class Program
{
static void Main(string[] args)
{
string data = null;
while (!string.IsNullOrWhiteSpace(data = Console.ReadLine()))
{
int number = 0;
int.TryParse(data, out number);
/* i tutaj przetwarzasz int'a */
}
}
}
}
Co do wczytywania na SPOJ-u, http://213.192.104.217/phpBB3-spoj-pl-backup/viewtopic.php?f=10&t=1208&sid=d5604dd159fa9f69b237daa76e5ceb43
Dziękuję bardzo.
Skorzystałem z :
while (((x = Console.ReadLine())) != null)
{
}
@sig, @reptile333 linki, które daliście to najgorsze możliwe rozwiązania: używacie Parse
zamiast TryParse
co spowoduje wyrzucenie wyjątku przy niemożności konwersji. O sprawdzaniu stringa gołym warunkiem zamiast dedykowaną metodą IsNullOrWhiteSpace
nawet nie wspominam.
grzesiek51114 napisał(a):
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace App { class Program { static void Main(string[] args) { string data = null; while (!string.IsNullOrWhiteSpace(data = Console.ReadLine())) { int number = 0; int.TryParse(data, out number); /* i tutaj przetwarzasz int'a */ } } } }
W sumie ten kod działa lepiej, nie ma żadnych błędów podczas wpisywania danych z klawiatury ręcznie.
Dziwne że sędzia przyjmuje kod który w przypadku wpisywania danych ręcznie daje błąd :v