C# w SPOJ
Kilka drobnych porad dla użytkowników serwisu SPOJ, którzy chcą rozwiązywać problemy algorytmiczne w C#.
Wczytywanie danych wejściowych linia po linii, do końca pliku
string line;
while (null != (line = Console.ReadLine()))
{
// operacje na zmiennej "line"
}
- zmienna line nie zawiera znaku końca linii (\n)
Wyłuskiwanie symboli z wczytanego łańcucha znaków
string line = Console.ReadLine();
string[] tokens = line.Split(new char[] { ' ', '\t' },
StringSplitOptions.RemoveEmptyEntries);
foreach (var token in tokens)
{
// operacje na każdym z symboli
}
- symbolem jest każdy niepusty ciąg znaków, nie zawierający białych znaków (spacja, tabulacja)
- informacje o słowie kluczowym var
Parsowanie łańcucha znaków zawierającego liczbę zmiennoprzecinkową z separatorem w postaci kropki
using System.Globalization;
// ..
string s = "3.14159";
float f = float.Parse(s, new CultureInfo("en-US").NumberFormat);
- symbol przecinka jest pomijany (np. dla s="123,456" otrzymamy f=123456)
- reprezentacja tekstowa liczby może zawierać białe znaki (spacja, tabulacja) występując przed nią i po niej, natomiast inne dodatkowe symbole spowodują wyrzucenie wyjątku FormatException
Otrzymywanie tekstowej reprezentacji liczby zmiennoprzecinkowej z separatorem w postaci kropki
using System.Globalization;
// ..
float pi = 3.14159f;
string s = Convert.ToString(pi, new CultureInfo("en-US")); // 3.14159
// to samo, z dokładnością do 3 liczb po przecinku
string s2 = pi.ToString("0.000", new CultureInfo("en-US")); // 3.142
Otrzymuje błąd NZEC - dlaczego?
Błąd wykonania NZEC (non-zero exit code) związany jest z wystąpieniem wyjątku podczas wykonywania programu. Najczęstsze przyczyny:
- przekroczenie zakresu zmiennej
- odwoływanie się do nieistniejącego elementu kolekcji
- odwoływanie się do "pustej" referencji (null)