Stránka 1 z 2

c# pomoc s kodem

Napsal: 17 úno 2014 20:13
od vik822
Dobrý den, zkouším si dělat v C# a jsem začátečník, dělám program, že z 5 čísel nejvyšší a nejnižší smaže a zbylé sečte v grafickém prostředí, udělal jsem to co mám v příloze, ale když napíšu víc stejných čísel, tak nefunguje, jinak jo. Vím, že to není úplně šťastné řešení, ale jsem rád, že jsem něco vyplodil, jen nevím jak to ošetřit. Prosím o radu a nebo i návrh na lepší řešení, děkuji :))

Re: c# pomoc s kodem

Napsal: 17 úno 2014 20:19
od faraon
A nebylo by lepší použít pole a ta čísla nejdřív seřadit?
Nebo aspoň těch pět proměnných projít a extrémy vyhodit někam bokem, tak abys pracoval jen s tím tvým rozmezím?

Re: c# pomoc s kodem

Napsal: 17 úno 2014 20:21
od vik822
Jo určitě si myslím, že přes pole by to bylo lepší, ale ještě je moc neumím :D nevim jak bych to zapsal, s tím mam problém největší :D

Re: c# pomoc s kodem

Napsal: 17 úno 2014 20:23
od domitea
Kam přesně zadáváš ty stejná čísla? Ono totiž, když se porovnávají pouze vůči jedné známce a né ještě mezi sebou, tak to někdy takhle nefunguje ;)

P.S: Na zdrojáky tu je tag [code] :smile:

Re: c# pomoc s kodem

Napsal: 17 úno 2014 20:28
od vik822
Tady je to v grafice, když zadam takhle ty 3 čísla stejné, tak se to po.... :D jinak to funguje, asi je teda musim nějak porovnat, ale nevim jak :D

Re: c# pomoc s kodem

Napsal: 17 úno 2014 20:33
od domitea
Naházíš do kolekce (nebo seznamu), zavoláš nějaký sort, poslední změníš na nulu a všechny sečteš.... Je to kanón na vrabce, ale takhle se to dnes dělá. Pro tebe to ale je odstrašující příklad!

Počkej si na Faraona, ten ti napíše krásnou esej na seřazení ;)

Re: c# pomoc s kodem

Napsal: 17 úno 2014 20:37
od vik822
Nejspíš budu potřebovat doučování :D když to je odstrašující, tak by se to dělat nemělo? :D proč se to dnes tedy dělá? :D nějaký kontakt, abych mu mohl napsat do zpráv? :) díky :)

Re: c# pomoc s kodem

Napsal: 17 úno 2014 20:41
od domitea
Počkej si na něj, on odpoví ;)

Na to tohle je vhodné pole (float[] cisla = new float[5]). Potom pomocí napsané funkce na setřídění (tady postačí BubbleSort) si čísla setřídíš. Potom budeš mít na posledním místě to nejnižší číslo (nebo na prvním, podle toho jak si to napíšeš ;) ) a místo něj dáš 0, potom pomocí cyklu uděláš součet a máš to ;)

Re: c# pomoc s kodem

Napsal: 17 úno 2014 20:58
od vik822
dobře díky, počkám na něj :) dneska už to nechám :D stejnak nevim jak tam ten bubble sort přidat nějak :D

Re: c# pomoc s kodem

Napsal: 17 úno 2014 21:05
od Sender
C# neumím,ale napsat to v jiným programovacím jazyce by byla sranda.Řešil bych to tak,že bych čísla srovnal (porovnání v cyklu) a pak s nimi pracoval podle potřeby.

Re: c# pomoc s kodem

Napsal: 18 úno 2014 04:04
od faraon
Když ještě neumíš pole, tak to zkusíme přímo s proměnnými. Pro přehlednost si je přejmenuji na A,B,C,D,E. Pak budeš potřebovat ještě nějakou dočasnou na prohazování obsahů, třeba T jako temp.
Po zadání všech pěti čísel (šlo by to i během zadávání) si je projdeš a porovnáš s krajními, uděláme to tak že v A bude nejmenší a v E největší, na pořadí zbylých B,C,D tentokrát nezáleží, z těch jen vypočítáš výsledek.
Z toho je vidět že ty krajní s ničím porovnávat nemusíš, stačí tedy otestovat ty tři uprostřed, a pokud je potřeba, prohodit je s krajními:

Takhle to provedeš pro vyhození minima z B do A:

Kód: Vybrat vše

if (B < A)
   {
   T = A;
   A = B;
   B = T;
   }

Takhle pro vyhození maxima z B do E:

Kód: Vybrat vše

if (B > E)
   {
   T = E;
   E = B;
   B = T;
   }

To samé musíš potom udělat i s C a D. Kdybys měl pole a prováděl to cyklem, nemusel bys to vypisovat třikrát za sebou ;-)
Když v nich bude nové minimum nebo maximum, tak se prohodí s tím bývalým, takže se nakonec může stát že se čísla mezi sebou proházela úplně, pokud by to mělo něčemu vadit, musel by se vymyslet jiný postup.

Pokud tam budeš mít víc stejných čísel, tak se samozřejmě do těch krajních vyhodí jen jedno z nich a ostatní zůstanou uvnitř, s tím počítej.

A než to naťukáš do počítače, zkus si to nejdřív ručně na stole. Nastříhej si pět lístečků, na ně napiš různá čísla, zamíchej je, a potom s nimi prováděj tenhle postup. Vyzkoušej to několikrát pro různé kombinace, ať vidíš co se přesně v tom programu děje.

Re: c# pomoc s kodem

Napsal: 22 úno 2014 15:12
od vik822
Díky moc du se na to podívat jestli to nějak dokážu předělat, každopádně mohl byste mi říci jak by se to udělalo přes ty pole? nebo nějakým bubble sortem? :)) děkuju.

--- Doplnění předchozího příspěvku (22 Úno 2014 15:38) ---

Super, funguje to, ale teď bych se ještě rád naučil jak to zkrátit přes ty pole a cykly, vážně bych byl moc vděčný, ale i tak to stačí, díky moc :))