IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

provize mlm

C# .NET

class pocitani : textove_prvky // textove_prvky dědí MainWindows - takže jsou v ní ty protected Listy v MainWindow
    {
        public void vypocitej(out double vysledek, out int bodovy_soucet, out double procenta)
        {
            priprav_hodnoty(); // funkce, která je definovaná dole
            bodovy_soucet = 0;
            double odecet = 0;
            bodovy_soucet = hodnoty.Sum();
            List<int> seznamtricetdvojek = new List<int>(); // List, do kterého ukládám 32
            List<int> seznamtricetpetek = new List<int>(); // List, do kterého ukládám 35
            for (int i = 0; i < hodnoty.Count(); i++) // cyklus, který se spustí tolikrát, kolik uživatel zadal TextBoxů
            {
                int s = hodnoty[i];
                if ((s >= 10000) && (s < 20000))
                    odecet = odecet + s * 0.04;
                if ((s >= 20000) && (s < 40000))
                    odecet = odecet + s * 0.08;
                if ((s >= 40000) && (s < 60000))
                    odecet = odecet + s * 0.12;
                if ((s >= 60000) && (s < 120000))
                    odecet = odecet + s * 0.16;
                if ((s >= 120000) && (s < 160000))
                    odecet = odecet + s * 0.20;
                if ((s >= 160000) && (s < 240000))
                    odecet = odecet + s * 0.24;
                if ((s >= 240000) && (s < 360000))
                    odecet = odecet + s * 0.28;
                if (s >= 360000 && (procenty[i].Text != "35%") && (procenty[i].Text != "37%") && (procenty[i].Text != "39%") && (procenty[i].Text != "40%")) // ty další podmínky jsou kvůli tomu, aby se TextBoxová hodnota neukládala do seznamu 32, když mi uživatel řekl, že to je něco jiného
                {
                    odecet = odecet + s * 0.32;
                    seznamtricetdvojek.Add(s);
                }
                if (procenty[i].Text == "35%")
                {
                    odecet = odecet + s * 0.35;
                    seznamtricetpetek.Add(s);
                }
                if (procenty[i].Text == "37%")
                {
                    odecet = odecet + s * 0.37;
                }
                if (procenty[i].Text == "39%")
                {
                    odecet = odecet + s * 0.39;
                }
                if (procenty[i].Text == "40%")
                {
                    odecet = odecet + s * 0.40;
                }
            }
            procenta = 0;
            if ((bodovy_soucet >= 10000) && (bodovy_soucet < 20000))
            {
                procenta = 0.04;
            }
            if ((bodovy_soucet >= 20000) && (bodovy_soucet < 40000))
            {
                procenta = 0.08;
            }
            if ((bodovy_soucet >= 40000) && (bodovy_soucet < 60000))
            {
                procenta = 0.12;
            }
            if ((bodovy_soucet >= 60000) && (bodovy_soucet < 100000))
            {
                procenta = 0.16;
            }
            if ((bodovy_soucet >= 100000) && (bodovy_soucet < 160000))
            {
                procenta = 0.20;
            }
            if ((bodovy_soucet >= 160000) && (bodovy_soucet < 240000))
            {
                procenta = 0.24;
            }
            if ((bodovy_soucet >= 240000) && (bodovy_soucet < 360000))
            {
                procenta = 0.28;
            }
            if (bodovy_soucet >= 360000)
            {
                procenta = 0.32;
            }
            if (seznamtricetdvojek.Count() == 1) // tady začíná ten duplikovaný a spaghetti code
            {
                int pomocna_promenna = 0;
                foreach (int s in seznamtricetdvojek)
                {
                    pomocna_promenna = pomocna_promenna + s;
                }
                if (bodovy_soucet - pomocna_promenna >= 300000)
                {
                    procenta = 0.35;
                }
                else
                    procenta = 0.32;
            }
            if (seznamtricetdvojek.Count() == 2)
            {
                int pomocna_promenna = 0;
                foreach (int s in seznamtricetdvojek)
                {
                    pomocna_promenna = pomocna_promenna + s;
                }
                if (bodovy_soucet - pomocna_promenna >= 300000)
                {
                    procenta = 0.37;
                }
                else
                {
                    seznamtricetdvojek.Remove(seznamtricetdvojek.Min()); // tady by možná mělo být .Max()
                    pomocna_promenna = 0;
                    foreach (int s in seznamtricetdvojek)
                    {
                        pomocna_promenna = pomocna_promenna + s;
                    }
                    if (bodovy_soucet - pomocna_promenna >= 300000)
                        procenta = 35;
                    else
                        procenta = 32;
                }
            }
            if (seznamtricetdvojek.Count() == 3)
            {
                int pomocna_promenna = 0;
                foreach (int s in seznamtricetdvojek)
                {
                    pomocna_promenna = pomocna_promenna + s;
                }
                if (bodovy_soucet - pomocna_promenna >= 300000)
                {
                    procenta = 0.39;
                }
                else
                {
                    seznamtricetdvojek.Remove(seznamtricetdvojek.Min());
                    pomocna_promenna = 0;
                    foreach (int s in seznamtricetdvojek)
                    {
                        pomocna_promenna = pomocna_promenna + s;
                    }
                    if (bodovy_soucet - pomocna_promenna >= 300000)
                    {
                        procenta = 0.37;
                    }
                    else
                    {
                        seznamtricetdvojek.Remove(seznamtricetdvojek.Min());
                        pomocna_promenna = 0;
                        foreach (int s in seznamtricetdvojek)
                        {
                            pomocna_promenna = pomocna_promenna + s;
                        }
                        if (bodovy_soucet - pomocna_promenna >= 300000)
                            procenta = 0.35;
                        else
                            procenta = 0.32;
                    }
                }
            }
            if (seznamtricetdvojek.Count() > 3) // snažím se ošetřit situaci, kdy je 32 víc než 3
            {
                int pomocna_promenna = 0;
                foreach (int s in seznamtricetdvojek)
                {
                    pomocna_promenna = pomocna_promenna + s;
                }
                while (seznamtricetdvojek.Count() >= 3)
                {
                    if (bodovy_soucet - pomocna_promenna >= 300000)
                    {
                        procenta = 0.39;
                        break;
                    }
                    else
                    {
                        pomocna_promenna = 0;
                        seznamtricetdvojek.Remove(seznamtricetdvojek.Min());
                        foreach (int s in seznamtricetdvojek)
                        {
                            pomocna_promenna = pomocna_promenna + s;
                        }
                    }
                }
                    if (seznamtricetdvojek.Count() < 3)
                    {
                        if (seznamtricetdvojek.Count() == 2)
                        {
                            pomocna_promenna = 0;
                            foreach (int s in seznamtricetdvojek)
                            {
                                pomocna_promenna = pomocna_promenna + s;
                            }
                            if (bodovy_soucet - pomocna_promenna >= 300000)
                            {
                                procenta = 0.37;
                            }
                            else
                            {
                                seznamtricetdvojek.Remove(seznamtricetdvojek.Min());
                                pomocna_promenna = 0;
                                foreach (int s in seznamtricetdvojek)
                                {
                                    pomocna_promenna = pomocna_promenna + s;
                                }
                                if (bodovy_soucet - pomocna_promenna >= 300000)
                                    procenta = 35;
                                else if (seznamtricetdvojek.Count() == 1)
                                {
                                    pomocna_promenna = 0;
                                    foreach (int s in seznamtricetdvojek)
                                    {
                                        pomocna_promenna = pomocna_promenna + s;
                                    }
                                    if (bodovy_soucet - pomocna_promenna >= 300000)
                                    {
                                        procenta = 0.35;
                                    }
                                    else
                                        procenta = 0.32;
                                }
                            }
                        }
                    }
                }
            if (seznamtricetpetek.Count() == 3) // počítáme 35
            {
                int pomocna_promenna = 0;
                foreach (int s in seznamtricetpetek)
                {
                    pomocna_promenna = pomocna_promenna + s;
                }
                if (bodovy_soucet - pomocna_promenna >= 300000)
                {
                    procenta = 0.40;
                }
                else if (seznamtricetdvojek.Count() == 3)
                {
                    pomocna_promenna = 0;
                    foreach (int s in seznamtricetdvojek)
                    {
                        pomocna_promenna = pomocna_promenna + s;
                    }
                    if (bodovy_soucet - pomocna_promenna >= 300000)
                    {
                        procenta = 0.39;
                    }
                    else
                    {
                        seznamtricetdvojek.Remove(seznamtricetdvojek.Min());
                        pomocna_promenna = 0;
                        foreach (int s in seznamtricetdvojek)
                        {
                            pomocna_promenna = pomocna_promenna + s;
                        }
                        if (bodovy_soucet - pomocna_promenna >= 300000)
                        {
                            procenta = 0.37;
                        }
                        else
                        {
                            seznamtricetdvojek.Remove(seznamtricetdvojek.Min());
                            pomocna_promenna = 0;
                            foreach (int s in seznamtricetdvojek)
                            {
                                pomocna_promenna = pomocna_promenna + s;
                            }
                            if (bodovy_soucet - pomocna_promenna >= 300000)
                                procenta = 0.35;
                            else
                                procenta = 0.32;
                        }
                    }
                }
            }
            if (seznamtricetpetek.Count() > 3) // snažím se ošetřit situaci, kdy uživatel zadá víc než 3 35
            {
                int pomocna_promenna = 0;
                foreach (int s in seznamtricetpetek)
                {
                    pomocna_promenna = pomocna_promenna + s;
                }
                while (seznamtricetpetek.Count() >= 3)
                {
                    if (bodovy_soucet - pomocna_promenna >= 300000)
                    {
                        procenta = 0.40;
                        break;
                    }
                    else
                    {
                        pomocna_promenna = 0;
                        seznamtricetpetek.Remove(seznamtricetpetek.Min());
                        foreach (int s in seznamtricetpetek)
                        {
                            pomocna_promenna = pomocna_promenna + s;
                        }
                    }
                }
            }
            vysledek = Math.Round(bodovy_soucet * procenta - odecet); // hodnota, kterou vracím
            textboxy.Clear(); // vymažu List textboxů
            seznamtricetdvojek.Clear(); // vymažu seznamy
            seznamtricetpetek.Clear(); // vymažu seznamy
        }
        private void priprav_hodnoty() // parsovaní hodnot, upozornění uživatele na špatné zadání
        {
            foreach (TextBox s in textboxy)
            {
                int parsovanidocasnehodnoty;
                if (!int.TryParse(s.Text, out parsovanidocasnehodnoty))
                    MessageBox.Show("Nezvládl jsem načíst číslo. Výpočet nemusí být správný.");
                hodnoty.Add(parsovanidocasnehodnoty); // uložení hodnoty do seznamu, se kterým pracuju při počítání
            }
        }
}

Neformátovaný

Přidáno: 8.11.2016
Expirace: Neuvedeno

Avatar
Autor: Mára
Aktivity