Do nového roku jako lepší programátoři? Znovu otevíráme večerní školu programování. Nette framework, návrhové vzory, testování nebo vůbec poprvé kurzy ASP.NET dostupné odkudkoli v republice.
Avatar
František Pastorek:

Mam takýto problém. Na vstupe zadávam čísla, napríklad 10 čísel, a jednotlivé čísla sú oddelené medzerou. Potrebujem všetky čísla nahádzať do int array ale akosi sa mi nedarí. Jediný spôsob čo ma napadá je cez string a odtiaľ povyťahovať tie čísla a zapísať do int array. Príde mi to trošku nepraktické. A chcem sa spýtať či na to nie je iný spôsob. Vopred ďakujem za odpoveď.

 
Odpovědět 5.11.2014 22:10
Avatar
Lukáš Křehula
Redaktor
Avatar
Odpovídá na František Pastorek
Lukáš Křehula:

Napadl mě jeden způsob

string vstup = "10 20 30 40 50 60 70 80 90 100";
string[] cisla = vstup.Split(' ');
List<int> num = new List<int>();
foreach (string str in cisla)
{
    int a;
    if (Int32.TryParse(str, out a))
        num.Add(a);
    else
        continue;
}
int[] nums = num.ToArray();

Určitě existují i lepší způsoby.
Každopádně tento kód i kontroluje, jestli je to celočíšelný vstup. V proměnné 'nums' budeš mít uložené všechny správné vstupy. Nemusíš vlastně ani použít pole, stačí ti ten List.

Editováno 5.11.2014 22:34
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 5.11.2014 22:33
Avatar
Nahoru Odpovědět 5.11.2014 22:35
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
František Pastorek:

Kaczmi

ja ti moc ďakujem. Úplne som zabudol na funkciu Split. Som ti vďačný, pretože tento problém riešim už asi 2 hodiny. Ďakujem ti moc za pripomenutie. Nepotrebujem to na nič praktické, len zajtra je zenit v programovaní a tam takéto sprostosti bývajú. Ešte raz ďakujem.

LOCK

 
Nahoru Odpovědět 5.11.2014 22:54
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na František Pastorek
Jan Vargovský:
string input = "10 20 30 40 50 60 70 80 90 100";
int[] numbers = input.Split(' ').Select(s => int.Parse(s)).ToArray();

EDIT: možná lepší takto

int[] numbers = input.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).Select(s => int.Parse(s)).ToArray();
Editováno 5.11.2014 22:57
 
Nahoru Odpovědět  +1 5.11.2014 22:56
Avatar
 
Nahoru Odpovědět 5.11.2014 23:19
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.