Avatar
loobka
Člen
Avatar
loobka:

Ako naplnim pole v c# lubivolnym počtom prvkov a zadavanie ukončim stlašením lubovoľného klávesu?

 
Odpovědět 29.12.2014 16:54
Avatar
Lukáš Křehula
Redaktor
Avatar
Odpovídá na loobka
Lukáš Křehula:

No pokud na začátku neznáš počet prvků, tak musíš použít List. Pokud by jsi to chtěl potom převést do pole tak můžeš použít ToArray()

List<int> list = new List<int>();
// ..
int[] pole = list.ToArray();
Editováno 29.12.2014 17:04
 
Nahoru Odpovědět 29.12.2014 17:04
Avatar
loobka
Člen
Avatar
Odpovídá na Lukáš Křehula
loobka:

Dakujem veľmmi pekne a ešte by som chcela pomocť s takouto úlohou v c#:
Úloha:
Uzivatel Vam zada niekolko slov a ich prekladov do vami vybraného jazyka roznych dlzok, ukoncenie zadavania bude klavesou ESC.

Ulozite ich do vhodnej struktury.
Osobitne pre kazdy jazyk vyratate dlzky slov a ulozite do pola(pre kazdy jazyk vlastne pole dlzok).
Vypisete tieto slova a dlzky slov v tvare:
slovo dlzka_slova preklad_slova dlzka_prekladu_slo­va
(napr.:
vlasy 5 hair 4
mravec 6 ant 3
kon 3 horse 5
)
Nasledne kazdu jazykovu verziu ulozite do osobitneho pola a zotriedite prislusne slova aj ich dlzky pomocou vami vybraneho algoritmu.

Po stlaceni vami urcenej klavesy ich vypisete uzivatelovi zotriedene v tvare
slovo dlzka_slova.

Po stlaceni inej klavesy vypisete najmensi, inej zas najvacsi a inej stredny prvok .
To dosiahnete tak, ze pri presuvani prvkov v poli dlzok budete sucasne presuvat aj prvky stringoveho pola.

Vsetko nech sa deje dialogom na konzole.
(napr.:
Ak chces vypisat najkratsie slovenske slovo stlac M
Ak chces vypisat najdlhsie anglicke slovo stlac L
Ak chces vidiet utriedene slovenske slova stlac U
Ak chces skoncit stlac K)

Uzivatel moze akcie aj opakovat, to znamena, dvakrat za sebou vidiet stredne slovenske slovo, az kym nestlaci danu klavesu (v mojom priklade K).

Ak by ste mi stým pomohli bola by som vam veľmi vdačna. Dakujeeeeeem. Prosííím

 
Nahoru Odpovědět  -2 29.12.2014 21:24
Avatar
rwn
Člen
Avatar
Odpovídá na loobka
rwn:

Myslím, že pomoc se ti může, ale tys v podstatě neřekl s čím máš problém, ale napsal jsi co máš za domácí úkol. :D btw. ukládání délek slov do pole je docela zbytečná záležitost, když si počet písmen můžeš dohledat přes vlastnost .Length

Nahoru Odpovědět 30.12.2014 3:25
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
loobka
Člen
Avatar
Odpovídá na rwn
loobka:

Iba preto, že ked som to urobila, tak mi to nešlo, vypisalo mi to veľa chýb a už ani neviem ako to opraviť

 
Nahoru Odpovědět 30.12.2014 12:05
Avatar
loobka
Člen
Avatar
Odpovídá na loobka
loobka:

Prepač, ja som iba samouk, kúpila som si knihu a robim to iba tak, chcem sa to naučiť:(

 
Nahoru Odpovědět 30.12.2014 12:08
Avatar
hanpari
Redaktor
Avatar
Odpovídá na loobka
hanpari:

Postupuj postupně :)

Rozděl si to na samostatné problémy a ty pak řeš. Když sem dáš zadání domácí úlohy, nikdo ji za tebe psát nebude, kór když to napíšeš tak okatě.

 
Nahoru Odpovědět 30.12.2014 13:54
Avatar
loobka
Člen
Avatar
Odpovídá na hanpari
loobka:

Dakujem za radu, ja som to tak urobila ale vyšiel mi z toho guľaš:). Ja už domace nedostavam,už som veľa rokov po škole,len som sa chcela niečo nove naučiť, ale nejde mi to :)

 
Nahoru Odpovědět  +1 30.12.2014 20:57
Avatar
hanpari
Redaktor
Avatar
hanpari:

V tom případě se omlouvám :)

Předem upozorňuji, že nejsem v c# právě kovaný, takže pokud bude někdo znát elegantnější zápis, ať mne klidně opraví. Ten kód dělá do jisté míry, co chceš. Snad tě postrčí správným směrem :)

class Program
        {
                public static void Main(string[] args)
                {

                        var Slovicka = new Dictionary<string, string>();
                        while (true) {
                                Console.WriteLine("Zadej slovíčka ve formátu slovo:slovo. " +
                                                  "Ukonči pomocí >konec<");
                                var prikaz = Console.ReadLine();
                                if (prikaz == "konec") {
                                        break;
                                }

                                var radka = prikaz.Split(Convert.ToChar(":"));
                                Slovicka.Add(radka[0], radka[1]);
                        }
                Console.WriteLine("Prvni jazyk");
                foreach (var slovo in Slovicka.Keys) {
                                Console.WriteLine("{0} : {1}", slovo, slovo.Length);
                }

                Console.WriteLine("Prvni jazyk");
                foreach (var slovo in Slovicka.Values) {
                                Console.WriteLine("{0} : {1}", slovo, slovo.Length);
                }

                        Console.ReadKey();

                }
        }
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 30.12.2014 22:45
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na hanpari
Jan Vargovský:
prikaz.Split(':');
;)

Btw, dávat všude var není dobrý zvyk.

Editováno 30.12.2014 23:16
 
Nahoru Odpovědět 30.12.2014 23:14
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Jan Vargovský
hanpari:

Prosím, SharpDevelop mne k tomu přímo nabádá :)
Ale ne, var je jen malé ulehčení mého utrpení, když musím vypsat všechno, co c# chce :)

Raději mi prozraď, jak bys řešil elegantně ten split(), myslím tím, jak se vyhnout rozbalování přes pomocnou proměnnou, pokud to nějak jde.

 
Nahoru Odpovědět 30.12.2014 23:24
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na hanpari
Jan Vargovský:

var je dobré používat u LINQu nebo nějakých generických věcí (protože ti to většinou zkrátí kód). U věcí typu var str = "some string" je to spíše lenost než ulehčení.

Ohledně toho splitování tak to nejde /nepřišel jsem na to jak/, ono stejně většinou tam máš nějaké věci, které musíš ještě parsovat do správného datového typu.

Zrovna u tohodle příkladu bys mohl použít nalezení indexu toho separátoru a vzít dva substringy.

Osobně si chci vždycky zkusit naimplementovat nějaký obecný CSV loader, který naparsuje CSV na kolekci objektů. Jenže pak si vždycky řeknu, že když už něco ukládám v CSV tak to nejsou žádné big data a radši to serializuju to do XML (a později deserializuju).

 
Nahoru Odpovědět 31.12.2014 0:28
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Jan Vargovský
hanpari:

U toho splitu je to moje lenost, to uznávám, ale jinak spíš souhlasím s doporučením SharpDevelopu a zbytečně to neopisuji. Ale já v c# moc nedělám, takže na mne nemůže nikdo dát :)
Mne napadlo jednoduché řešení celého problému, prostě si celý split odpustit a zapsat inputy do svou proměnných :)

 
Nahoru Odpovědět 31.12.2014 0:37
Avatar
loobka
Člen
Avatar
 
Nahoru Odpovědět 31.12.2014 16:30
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 14 zpráv z 14.