Autor | Zpráva | ||
---|---|---|---|
Werewolf Profil |
#1 · Zasláno: 28. 3. 2010, 20:08:15
Zdravím.
Nic jsem nenašel o tom, jak uložit pole čísel (int[,]) do souboru a potom ho znovu načíst. Poradíte někdo, prosím? Díky :-) |
||
Timy Profil |
#2 · Zasláno: 28. 3. 2010, 21:05:49
public static string Matrix2String(int[,] matrix) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < matrix.GetLength(0); i++) { for (int j = 0; j < matrix.GetLength(1); j++) { sb.AppendFormat("{0} ", matrix[i, j]); } sb.AppendLine(); } return sb.ToString(); } Tahle metoda ti převede matici čísel řetězce ve tvaru: 1 2 3 4 5 6 To pak uložíš. A metodu, která ti načte, už si napiš sám ;). |
||
Werewolf Profil |
#3 · Zasláno: 28. 3. 2010, 21:16:23 · Upravil/a: Werewolf
Timy:
Fajn, řešení mi funguje, chápu, jak funguje. Díky a zkusim najít něco o ukládání do souboru a napsat tu metodu... Neexistuje v C# něco jako explode? Sakra, musím jít... |
||
Chamurappi Profil |
#4 · Zasláno: 28. 3. 2010, 21:24:09
Reaguji na Werewolfa:
„zkusim najít něco o ukládání do souboru“ Na obyčejné rychlé uložení stačí statická metoda File.WriteAllText(String soubor, String obsah) .
„Neexistuje v C# něco jako explode?“ Myslíš něco jako to, čemu drtivá většina jazyků říká Split ? Ano, existuje. Hledej Split .
|
||
Werewolf Profil |
#5 · Zasláno: 29. 3. 2010, 09:13:53 · Upravil/a: Werewolf
Chamurappi:
Díky, File.WriteAllText mi funguje. Taky jsem našel File.ReadAllText, taky funguje. Jenže když jsem zkoušel převrátit Timyho metodu, setkal jsem se s problémem: public static int[,] String2Matrix(string matrix) { char[] delim = { '\n' }; char[] delim2 = { ' ' }; string[] splmatrix = matrix.Split(delim); string[] splmatrix2 = splmatrix[0].Split(delim2); int[,] ret = new int[splmatrix.Length, splmatrix2.Length]; for (int i = 0; i < splmatrix.Length; i++) { string[] spl = splmatrix[i].Split(delim2); for (int y = 0; y < spl.Length; y++) { string replaced = spl[y].Replace("\n", null); int parsed = Int32.Parse(replaced); ret[i, y] = parsed; } } return ret; } Hlásí to vyjímku „Vstupní řetězec nemá správný formát.“. Poradíte někdo, prosím? Vím, že vám všem lezu na nervy, jak všechno zkazím, a omlouvám se... Díky |
||
Chamurappi Profil |
#6 · Zasláno: 29. 3. 2010, 10:24:34
|
||
Timy Profil |
#7 · Zasláno: 29. 3. 2010, 13:09:52 · Upravil/a: Timy
A taky bacha na to, že ta moje funkce to nevrátí zrovna v dobrém tvaru :-).
1_2_3_ 4_5_6_ [newline] (Podtržítko značí mezeru.) Zkusil jsi to třeba debugovat? Zjistil bys, že ti to padá na tom, že se do „string replaced“ uloží právě „\r“. |
||
Werewolf Profil |
#8 · Zasláno: 29. 3. 2010, 13:11:20 · Upravil/a: Werewolf
Chamurappi:
Odstranil jsem i \r a nic. Bohužel potřebuji i to, aby byl soubor lidsky čitelný...
|
||
Werewolf Profil |
#9 · Zasláno: 29. 3. 2010, 18:43:55
Zdravím vás všechny. Znovu.
Mám jeden problém... Potřeboval bych zjistit, kolik prvků v dvourozměrném poli má první index (pole[index, index]). Pokud jste mě nepochopili (sám se skoro nechápu), tak chci znát to druhé číslo v hranatých závorkách (v případě pole[x, y] je to y). Díky :-) |
||
Timy Profil |
#10 · Zasláno: 29. 3. 2010, 18:51:23
Werewolf:
Zkus prozkoumat tu mou funkci Matrix2String. |
||
Werewolf Profil |
#11 · Zasláno: 29. 3. 2010, 18:54:09
Timy:
Já oslík... Díky :-) |
||
Werewolf Profil |
#12 · Zasláno: 29. 3. 2010, 19:08:59 · Upravil/a: Werewolf
Ještě jsem opravil problém s tím, že se mi přidávaly indexy, zapomněl jsem odečíst jedničku.
Až teď jsem si díky té chybě všiml, že pokud položce dvourozměrného pole čísel nedám hodnotu, bude tam automaticky nula. To se hodí, vzhledem k tomu, že nejdříve vytvářím pole a plním ho nulami v cyklu. Ten cyklus teď můžu vypustit a ušetřit čas. Můžete očekávat, že budu mít problém s nějakou chybou... Zatím děkuji všem Vyvolána vyjímka OutOfMemoryException :-D |
||
Časová prodleva: 14 let
|
0