Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno C# vzorec

Dobrý den mohli by jste mi poradit na formuláři mam
txt1-výhra
txt2-remíza
txt3-prohra
txt4-uspesnost
potřebuju aby mi do txt4-uspesnost vypsali jestli je mužstvo uspěšné pokud má víc než 80 % , je vynikající. Pokud získalo od 50 do 80 % je dobré, v ostatních případech je neúspěšné

v postate potrebuju zsapsat vzorec

txt1-výhra*3 + txt2-remíza*1
-------------------------------- * 100= pocet procent
txt1-výhra*3 + txt2-remíza*3 + txt3-prohra*3

Předmět Autor Datum
((txt1-výhra*3)+(txt2-remíza*100))/((txt1-výhra*3) + (txt2-remíza*3)+(txt3-prohra*3))
Flash_Gordon 20.03.2010 22:15
Flash_Gordon
a jak to amm přesně zapsat? int vyhra = Convert.ToInt32(txt1); int remiza = Convert.ToInt32(txt2);…
silver 20.03.2010 22:18
silver
Zkus: int vyhra = Convert.ToInt32(txt1.Text); int remiza = Convert.ToInt32(txt2.Text); int prohra =…
Flash_Gordon 20.03.2010 22:25
Flash_Gordon
potřeboval bych to přez else if switch switch if jedno z toho.. potřeboval bych cely kod od toho kon…
silver 20.03.2010 22:31
silver
:-( Úspěšnost tam už řešená je.
Flash_Gordon 20.03.2010 22:34
Flash_Gordon
jo vidim a nejde to viřešit přez neco jineho nez to float
silver 20.03.2010 22:36
silver
pořad tam je ejn to neuspěšné i když tam dam hodnoty když by to mělo byt uspšně tk to piše neuspěšné
silver 20.03.2010 22:38
silver
No tak pak je chyba v tom zlomku (výsledky jaké podává).
Flash_Gordon 20.03.2010 22:48
Flash_Gordon
Vo výpočte výsledku chýbajú zátvorky pri násobení číslom 100. Tiež nie je potrebné ukladať výsledok…
los 21.03.2010 00:29
los
když to spustim tk mi to napíše že došlo k neošetřené chybe a ze vstupni retezec nema spravny format
silver 21.03.2010 10:14
silver
int vyhra = Convert.ToInt32(txtpocetvytezstvi.Text); int remiza = Convert.ToInt32(txtPocetremiz.Text…
silver 21.03.2010 10:18
silver
to mi taky hazá tu chybu:(
silver 21.03.2010 10:18
silver
To bude zrejme spôsobené tým, že vstupný reťazec nemá správny formát. Vôbec nikde tam neošetruješ ne…
los 21.03.2010 10:57
los
jak bys to ted anapsal pls? cely?
silver 21.03.2010 16:27
silver
A čo to má teda spraviť, keď niekto namiesto čísla napíše niečo iné?
los 21.03.2010 19:34
los
asi vyskocit messagebox ze sprácou zadal jsi špatne hodnoty nbo podobne ale delal jsem podoubnou vec…
silver 21.03.2010 19:46
silver
Keď tak teraz nad tým rozmýšľam, tak by som namiesto tých textboxov použil NumericUpDown, do ktorého…
los 21.03.2010 20:13
los
už jsem to vyřešil chyba byla v tom že to vychazelo občas na desetiná místa proto jsem tam místo int… poslední
silver 24.03.2010 11:36
silver

a jak to amm přesně zapsat?

int vyhra = Convert.ToInt32(txt1);
int remiza = Convert.ToInt32(txt2);
int prohra = Convert.ToInt32(txt3);
a pak ja? mam si ete dat jednu třeba int mezisoucet a vypocitat to jako ze mezisoucet a potom to udelat přez if? kdyžtak poradte přesneji

Zkus:

int vyhra = Convert.ToInt32(txt1.Text);
int remiza = Convert.ToInt32(txt2.Text);
int prohra = Convert.ToInt32(txt3.Text);

float vysledekProcent = ((vyhra*3)+remiza*100)/((vyhra*3)+(remiza*3)+(prohra*3));


txt4.Text = "Neúspěšné";
if( vysledekProcent > 50)
txt4.Text = "Dobré";
if( vysledekProcent > 80)
txt4.Text = "Vynikajicí";

potřeboval bych to přez
else if
switch
switch if
jedno z toho..
potřeboval bych cely kod od toho konvertovani
int vyhra = Convert.ToInt32(txt1.Text);
int remiza = Convert.ToInt32(txt2.Text);
int prohra = Convert.ToInt32(txt3.Text);
a co ted nadefinovat
int mezisoucet.. ??? jakoze se to do toho ulozi, a potom se z toho pomoci if rozhodne ta uspesnost..

Vo výpočte výsledku chýbajú zátvorky pri násobení číslom 100. Tiež nie je potrebné ukladať výsledok ako float, keď je výsledkom výrazu celé číslo.

int uspesnost = (vyhra*3 + remiza) * 100 / (vyhra*3 + remiza*3 + prohra*3);

txt4.Text =
  (uspesnost >= 80 ? "Vynikajicí" :
  (uspesnost >= 50 ? "Dobré" :
  "Neúspěšné"));
int vyhra = Convert.ToInt32(txtpocetvytezstvi.Text);
int remiza = Convert.ToInt32(txtPocetremiz.Text);
int prohra = Convert.ToInt32(txtpocetproher.Text);

int uspesnost = (vyhra * 3 + remiza) * 100 / (vyhra * 3 + remiza * 3 + prohra * 3);


if (uspesnost >= 80)
{ 
    txtHodnocenitymu.Text="Vynikajicí";
}

if (uspesnost >= 50)
{ 
    txtHodnocenitymu.Text="Dobré" ;
}

if (uspesnost < 50)
{
    txtHodnocenitymu.Text = "Neuspěšné";
}

To bude zrejme spôsobené tým, že vstupný reťazec nemá správny formát. Vôbec nikde tam neošetruješ nesprávny vstup od používateľa, takže to jednoducho spadne. Keďže si nepísal, že čo to má robiť v prípade, ak niekto napíše do niektorého poľa číslo v nesprávnom formáte, tak nikto ani nenapísal kód, ktorý by to nejako ošetroval.

Keď budeš ošetrovať vstup používateľa, tak zrejme využiješ metódu int.TryParse namiesto konverzie pomocou Convert.ToInt32 a následného odchytávania výnimky FormatException.

Keď tak teraz nad tým rozmýšľam, tak by som namiesto tých textboxov použil NumericUpDown, do ktorého môže používateľ napísať len číslo a nastavil to tak, aby tam mohol zadávať iba celé čísla z nejakého rozumného intervalu.

Ak tam chceš mať textboxy, tak s ošetrením používateľského vstupu by to mohlo vyzerať napríklad takto:

int vyhra;
if (!int.TryParse(txt1.Text, out vyhra))
{
  MessageBox.Show("Vyhra musi byt cele cislo.");
  return;
}

int remiza;
if (!int.TryParse(txt2.Text, out remiza))
{
  MessageBox.Show("Remiza musi byt cele cislo.");
  return;
}

int prohra;
if (!int.TryParse(txt3.Text, out prohra))
{
  MessageBox.Show("Prohra musi byt cele cislo.");
  return;
}

int uspesnost = (vyhra*3 + remiza) * 100 / (vyhra*3 + remiza*3 + prohra*3);
txt4.Text =
  (uspesnost >= 80 ? "Vynikajicí" :
  (uspesnost >= 50 ? "Dobré" :
  "Neúspěšné"));

Zpět do poradny Odpovědět na původní otázku Nahoru