Úspěšnost v procentech – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Úspěšnost v procentech – .NET – Fórum – Programujte.comÚspěšnost v procentech – .NET – Fórum – Programujte.com

 

davidus
~ Anonymní uživatel
38 příspěvků
12. 11. 2011   #1
-
0
-

Mám problém s vypočítáním úspěšnosti v procentech v tomto programu:

namespace hadani
{
    class Program
    {
        static void Main(string[] args)
        {
            int pocet_pokusu = 0;
            Random nh = new Random();
            
            int dolnimez = 0;
            int hornimez = 0;
            int i = 1;
            int odpoved = 0;
            int procenta = 100;
           
            
            Console.WriteLine("Zadejte dolni mez rozsahu: ");
            dolnimez = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Zadejte horni mez rozsahu: ");
            hornimez = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Zadejte pocet pokusu: ");
            pocet_pokusu = Convert.ToInt32(Console.ReadLine());
            int cislo = nh.Next(dolnimez, hornimez);
            while (i < pocet_pokusu + 1)
            {
                Console.WriteLine("Jaké číslo si myslím?");
                odpoved = Convert.ToInt32(Console.ReadLine());
                if (odpoved == cislo)
                {
                    Console.WriteLine("Uhodl jsi :) ");
                    Console.WriteLine("Na kolik pokusu: " + i+ "\nProcentualni uspesnost: " + ? +"%");
                    Console.ReadLine();
                    return;
                }
                else if (odpoved < cislo)
                {
                    Console.WriteLine("Moje cislo je vetsi ;)");
                    i++;
                }
                else if (odpoved > cislo)
                {
                    Console.WriteLine("Moje cislo je mensi ;)");
                    i++;
                }
                procenta = i / 10;

            }
           
            Console.WriteLine("Na kolik pokusu: " + i+ "\nProcentualni uspesnost: "+ ? + "%");
            Console.WriteLine("Moje myslene cislo bylo: " + cislo);
            Console.ReadLine();
           

        }
       

    }
}
//(? je misto pro promenou s úspěšností )

Je to můj úkol do školy, všechno funguje jak má, jen ty procenta mi dělají problém.

Našel by se tu někdo kdo by mi poradil ? :)

Nahlásit jako SPAM
IP: 79.98.72.–
12. 11. 2011   #2
-
0
-

Nejsem si jistej, co přesně má ukazovat ta procentuální úspěšnost, ale třeba to takhle půjde. V každým případě zkus ten kód ještě vylepšit. 

class Program
{
	static void Main(string[] args)
	{
		var random = new Random();

		Console.WriteLine("Zadejte dolni mez rozsahu: ");
		int minValue = Convert.ToInt32(Console.ReadLine());

		Console.WriteLine("Zadejte horni mez rozsahu: ");
		int maxValue = Convert.ToInt32(Console.ReadLine());

		Console.WriteLine("Zadejte pocet pokusu: ");
		double pocetPokusu = Convert.ToDouble(Console.ReadLine());

		int cislo = random.Next(minValue, maxValue);
		Console.WriteLine(cislo);

		double i = 0;
		while (i < pocetPokusu)
		{
			Console.WriteLine("Jaké číslo si myslím?");
			int odpoved = Convert.ToInt32(Console.ReadLine());

			if (odpoved == cislo)
			{
				Console.WriteLine("Uhodl jsi :)");
				break;
			}
			
			if (odpoved < cislo)
			{
				Console.WriteLine("Moje cislo je vetsi ;)");
				i++;
			}
			else if (odpoved > cislo)
			{
				Console.WriteLine("Moje cislo je mensi ;)");
				i++;
			}
		}
		
		if (i == pocetPokusu)
		{
			Console.WriteLine("Myšlené číslo: {0}", cislo);
		}
		else
		{
			Console.WriteLine("Na kolik pokusu: {0}", i + 1);
		}

		var uspesnost = 100 / pocetPokusu * (pocetPokusu - i);
		Console.WriteLine("Úspěšnost: {0}%", uspesnost);

		Console.ReadLine();
	}
}
Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
davidus
~ Anonymní uživatel
38 příspěvků
12. 11. 2011   #3
-
0
-

djanosik: Díky, funguje to parádně ;)

Ale je tam nejspíš jedna chybka, ještě se na to podívám, ale když nastavím dolní mez 1 a horní 100000 a počet pokusů 5 tak když zadám první číslo, tak mi vypíše to "myšlené" a až potom že to číslo má být větší.

Nahlásit jako SPAM
IP: 79.98.72.–
12. 11. 2011   #4
-
0
-

#3 davidus
Jo, to je pravděpodobný, že tam je chyba. To se stává.

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
davidus
~ Anonymní uživatel
38 příspěvků
12. 11. 2011   #5
-
0
-

Nevadí ;) i tak díky za pomoc s řešením.

Nahlásit jako SPAM
IP: 79.98.72.–
12. 11. 2011   #6
-
0
-

#3 davidus
Ještě pozor na to, že se dolní a horní mez nechová stejně (u mezí 0 - 10 se zobrazí čísla 0 - 9). Taky je tam problém, pokud uživatel místo čísla zadá písmeno, pak to spadne.

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
davidus
~ Anonymní uživatel
38 příspěvků
12. 11. 2011   #7
-
0
-

No, to s tím písmenem se dá napravit použitím try, ale jelikož jsme v prváku, try jsme jeste nebrali jen jsem trochu napřed tak učitel až to bude zkoušet písmena nezadá :)

Nahlásit jako SPAM
IP: 79.98.72.–
12. 11. 2011   #8
-
0
-

#7 davidus
Na tom nezáleží, jestli jste to probírali nebo ne (int.TryParse, obdobně pro double). Jde jen o to, jestli to umíš zdůvodnit.

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
davidus
~ Anonymní uživatel
38 příspěvků
12. 11. 2011   #9
-
0
-

U  try/tryparse ano, u toho s tím 0-10, si myslím že to je tím, že se mez musí nastavovat o 1 vyšší ?

Nahlásit jako SPAM
IP: 79.98.72.–
12. 11. 2011   #10
-
0
-

#9 davidus
Jo, horní mez musí být +1.

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
Pavol
~ Anonymní uživatel
10 příspěvků
12. 11. 2011   #11
-
0
-

Ja som si to vyriesil nejako takto, ma kolega inspiroval k podobnemu programu :)

namespace Percentualna_uspesnost
{
    class Program
    {    
        static void Main(string[] args)
        {
            bool uhadnute = false;
            Random nahodneCislo_Odpoved = new Random();
            Random nahodneCislo_Myslene = new Random();
            Console.WriteLine("Zadajte dolnu medz : ");
            int dolna_Medz = int.Parse(Console.ReadLine());
            Console.WriteLine("Zadajte hornu medz : ");
            int horna_Medz = int.Parse(Console.ReadLine());
            int odpoved = nahodneCislo_Odpoved.Next(dolna_Medz, horna_Medz);
            Vypocet(odpoved, uhadnute);
        }
        private static void Vypocet(int odpoved, bool uhadnute)
        {         
            int pocet_Pokusov = 1;
            do
            {
                Console.WriteLine("Zajte svoje myslene cislo : ");
                int cislo = int.Parse(Console.ReadLine());
                if (odpoved == cislo)
                {
                    Console.WriteLine("Moje cislo "+cislo+" si uhadol");
                    uhadnute = true;               
                }
                else if (odpoved > cislo)
                {
                    Console.WriteLine("Moje cislo je vacsie ako "+ cislo);
                    pocet_Pokusov++;
                    uhadnute = false;
                }
                else if (odpoved < cislo)
                {
                    Console.WriteLine("Moje cislo je mensie ako "+cislo);
                    pocet_Pokusov++;
                    uhadnute = false;
                }          
            } while (uhadnute != true );
            int uspesnost = 100/pocet_Pokusov;
            Console.WriteLine("Moje myslene cislo bolo: " + odpoved + " a uhadol si ho na " + pocet_Pokusov + "x,"+ "co predstavuje "+uspesnost+"% uspesnost.");
            Console.ReadLine();      
        }
    }
}

Nahlásit jako SPAM
IP: 85.248.44.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 42 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý