Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 14. 05. 2013 22:00

Jasque
Příspěvky: 61
Reputace:   
 

Cteni matice v C#

Zdravim!
Mohl by mi prosim nekdo poradit, jak napsat kod V c#, ktery precte uzivatelem zadanou matici a naplni ji do pole?
Nema to byt konzolova aplikace a opravdu nevim, jaky prvek/prvky mam pouzit :/

Pro ukazku:
Matice 3x3 se naplni do pole[i,j]


Diky moc za kazde rady ;-)

Offline

 

#2 05. 09. 2013 11:36 — Editoval frank_horrigan (05. 09. 2013 11:38)

frank_horrigan
Příspěvky: 938
Reputace:   31 
 

Re: Cteni matice v C#

Zdar,
můžeš to udělat relativně jednoduše, uděláš si to třeba přes WPF textboxy, kterých hodíš třeba 10 horizontálně a 10 vertikálně (pak samozřejmě doházíš takto vzniklý čtverec), pojmenuješ si je nějak logicky, uděláš si proměnnou třeba typu List<TextBox>, kterou naplníš nějak logicky (třeba po řádcích) jmény těch prvků jak je tam máš, a hodíš si button, který pojmenuješ třeba "parse" - a chytneš event onClick, do kterého hodíš cyklus (foreach) a projdeš celý ten list, kde budeš kontrolovat, zda pole není null (poznamenáš si první výskyt null hodnoty na řádku, to ti udělá hranici matice, ostatní už budeš později ignorovat, stejně jako na příštím řádku), a projždíš sloupce, a hodně podobným principem (první null na prvním řádku znamená druhý rozměr matice).
Dále přečtené (ne-null) hodnoty vyparsuješ vlastnost .Text jako int (takže třeba parsedMatrix.Add(int.Parse(radek2sloupec4.Text);) (resp. jsi v cyklu foreach(TextBox t in matrixList) )
{
//....
try
{
  parsedMatrix.Add(int.Parse(t.Text)); //parsedMatrix je list intů
//.....
}
catch (Exception) {//.... umíš dělat s výjimkama, že?}

Nakonec tedy máš horizontální rozměr, i vertikální, takže si vyrobíš dvojrozměrný pole, jejich velikosti budou rozměry-1, a jenom foreachem je naplníš z těch parsovaných intů.

So easy, isn't it?

Edit: kdybys potřeboval matici větší než 10x 10, tak si ještě udělej dvě tlačítka "nová stránka vpravo" a "nová stránka dolů" a dostaneš nekonečně velký prostor pro nekonečně (no dobře, nepranýřujte mně) velkou matici - samozřejmě obsluha je pak složitější, pokud uděláš novou stránku, potřebuješ si naparsovat hodnoty matice a někam uložit, kde to pak jenom spojíš - to už je ovšem trochu "vyšší dívčí" proti původnímu dotazu :)


The only thing worse than being wrong is staying wrong
Sun Tzu - The Art of War

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson