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

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
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
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é nový
silver 20.03.2010 22:38
silver
No tak pak je chyba v tom zlomku (výsledky jaké podává). nový
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… nový
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 nový
silver 21.03.2010 10:14
silver
int vyhra = Convert.ToInt32(txtpocetvytezstvi.Text); int remiza = Convert.ToInt32(txtPocetremiz.Text… nový
silver 21.03.2010 10:18
silver
to mi taky hazá tu chybu:( nový
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… nový
los 21.03.2010 10:57
los
jak bys to ted anapsal pls? cely? nový
silver 21.03.2010 16:27
silver
A čo to má teda spraviť, keď niekto namiesto čísla napíše niečo iné? nový
los 21.03.2010 19:34
los
asi vyskocit messagebox ze sprácou zadal jsi špatne hodnoty nbo podobne ale delal jsem podoubnou vec… nový
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… nový
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