Načítání z konzole do pole s parsováním vstupu – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Načítání z konzole do pole s parsováním vstupu – .NET – Fórum – Programujte.comNačítání z konzole do pole s parsováním vstupu – .NET – Fórum – Programujte.com

 

JiriVavru0
Návštěvník
17. 11. 2008   #1
-
0
-

Zdravím
Měl bych dotaz, jak docílit načtení n-hodnot do pole z konzole a jejich rozdělení pod jednotlivé indexy v poli např.
pomocí mezery (středníku) mezi jednotlivými prvky.
Další operace s polem už mám hotové ale zde na to nemohu příjít, jelikož jsem si hodnoty dřív definoval pevně při vytváření pole.

Napadlo mne udělat to takto, ale tím neurčím rozdělení těch hodnot, takže to bude jedno dlouhé číslo..

int i = Int32.Parse(Console.ReadLine());

int[] hodnoty = new int[i];


Tuší někdo, jak to co nejefektněji udělat?

Díky za každou radu...

Nahlásit jako SPAM
IP: 89.24.4.–
Chrasty
~ Redaktor
+4
Posthunter
17. 11. 2008   #2
-
0
-

Vstup z konzole rozděl na pole menších stringů pomocí metody String.Split, a pak to z toho pole zkopíruj (a mezitím přeparsuj na int) do jiného pole.

Nahlásit jako SPAM
IP: 193.179.196.–
JiriVavru
~ Anonymní uživatel
87 příspěvků
18. 11. 2008   #3
-
0
-

Díky za radu, pokud ale použiji split, tak mi to nerozdělí ty hodnoty, do pole..resp, je to celé jako jedna hodnota. Abych si to ověřil, použil jsem metodu rank na zjištění počtů záznamů v poli.
takže to nyní vypadá takto:

          string i =(Console.ReadLine());

string[] hodnoty = i.Split(' ');//Rozdeleni ze vstupu na mezery a ulozeni do pole
Console.WriteLine(hodnoty.Rank);//Vypsani poctu prvku pole.

Co dělám špatně?

Nahlásit jako SPAM
IP: 89.24.4.–
Chrasty
~ Redaktor
+4
Posthunter
18. 11. 2008   #4
-
0
-

Špatně jsi totiž pochopil vlastnost Rank. Nevrací počet prvků, ale rozměry pole :-)

Pokud udělám pole typu int[,], Rank mi vrátí číslo 2. Pokud udělám int[,,], Rank mi vrátí číslo 3. A tak dále.

Délku pole zjistíš vlastností Length:

string i = Console.ReadLine();

string[] hodnoty = i.Split(' ');
Console.WriteLine(hodnoty.Length);

Nahlásit jako SPAM
IP: 193.179.196.–
JiriVavru
~ Anonymní uživatel
87 příspěvků
18. 11. 2008   #5
-
0
-

Ach so..tak nyní je to již v naprostém pořádku.
Děkuji za vysvětlení...

Nahlásit jako SPAM
IP: 89.24.5.–
JiriVavru
~ Anonymní uživatel
87 příspěvků
18. 11. 2008   #6
-
0
-

Tak a nyní se vyskytnul další problém, zjistil jsem, že na pole nemohu použít žádnou konverzní fci..resp. to co jsem nalezl nefungovalo korektně a tak se tedy ptám:
Je nějaká fce podobná split použitelná na integer?
Nebo konverzní fce, která převede pole stringů na int?
Zatím je to takto:

   Console.WriteLine("Zadej hodnoty, ktere maji byt serazeny a stiskni enter");

Console.WriteLine("Pozn. Hodnoty oddeluj mezernikem");
int i = Int32.Parse(Console.ReadLine());//Nacteni hodnot, potreba je ale nejak rozdelit do jedn. indexu napr mezerou
int[] hodnoty = new int [i];


Díky za radu..

Nahlásit jako SPAM
IP: 89.24.5.–
Pebble0
Návštěvník
19. 11. 2008   #7
-
0
-

To JiriVavru : Zkus si nadefinovat druhý pole int.Po tom, co si vstup splitneš do pole string to vem smyčkou
foreach(string cislo in pole), konvertuj každej prvek pole a číslo ulož do toho druhýho pole jako int.

Nahlásit jako SPAM
IP: 83.208.77.–
Pebble0
Návštěvník
19. 11. 2008   #8
-
0
-

asi takhle, mě to funguje:
{
Console.WriteLine("Zadej čísla oddělená mezerou");
string[] číslaString = Console.ReadLine().Split(' ');
int[] číslaInt = new int[číslaString.Length];
for (int i = 0; i < číslaString.Length; i++)
číslaInt[i] = Int32.Parse(číslaString[i]);
}

Nahlásit jako SPAM
IP: 83.208.77.–
JiriVavru
~ Anonymní uživatel
87 příspěvků
19. 11. 2008   #9
-
0
-

Díky za radu, trochu škoda, že v .NET není přímo konverzní fce na převedení hodnot v poli.
Díky ale ještě jednou za radu, dá se s tím pracovat dále přesně jak potřebuji..

Nahlásit jako SPAM
IP: 89.24.5.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 58 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý