Procentuální podíl v C# – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Procentuální podíl v C# – .NET – Fórum – Programujte.comProcentuální podíl v C# – .NET – Fórum – Programujte.com

 

artorie
~ Anonymní uživatel
14 příspěvků
31. 3. 2012   #1
-
0
-

Píšu si aplikaci, kterou zkouším testovat pravděpodobnost. Její základní podoba 15000 opakuje náhodné generování 1 nebo 2 , zaznamenává hodnoty, a vypíše počet jedniček, počet nul, nejdelší řadu stejných čísel, ale nejde mi počítat procentuální zastoupení jednotlivých čísel. kod je zde.

using System;
namespace console
{
	class Program
	{
		static void Main()
		{
			String a = Console.ReadLine();
			int edna = 0;
			int dva = 0;
			int predchozi = 0;
			int pocet = 0;
			int nejvice =0;			
			Random localhost = new Random();
			for(int i = 1; i<15000;i++ )
			{				
				int generator;
				generator = localhost.Next(1,3);
				if(generator == 1)
				{
					edna++;
				}
				else
				{
					dva++;
				}
				if(predchozi == generator)
				{
					pocet++;		
				}
				else
				{
					pocet = 0;
				}
				if(pocet > nejvice)
				{
					nejvice = pocet;
				}
				predchozi = generator;			
				Console.WriteLine(generator);
								
			}
			double procentjedna = (edna/(dva+edna))*100;
			double procentdva = (dva/(dva+edna))*100;
			Console.WriteLine("pocet jedniček");
		    Console.WriteLine(edna+" což je "+procentjedna+"%");
			Console.WriteLine("pocet dvojek");
			Console.WriteLine(dva+" což je "+procentdva+"%");
			Console.WriteLine("nejdelší řada");
			Console.WriteLine(nejvice);
			Console.ReadLine();
		}
	}
}

Procenta by to mělo počítat ve spodní části.

Nahlásit jako SPAM
IP: 46.13.97.–
Wikan
~ Anonymní uživatel
10 příspěvků
31. 3. 2012   #2
-
0
-

Console.WriteLine(edna+" což je "+procentjedna.ToString()+"%");

Nahlásit jako SPAM
IP: 82.144.130.–
artorie
~ Anonymní uživatel
14 příspěvků
31. 3. 2012   #3
-
0
-

#2 Wikan
Já bych řekl, že problém je ve výpočtu. když místo výpočtu počtu procent dám třeba jen nějaké zkušební čísloí, tak se normálně zobrazí číslo, takhle je ale výstupem vždy 0%

Nahlásit jako SPAM
IP: 46.13.97.–
davous2670
Newbie
1. 4. 2012   #4
-
0
-

Nazdar,

moje řešení.

1. Změň datový typ edna a dva na double.

double edna = 0;
double dva = 0;

2. A počítej tímto způsobem:

double procentjedna = edna / ((edna+dva) / 100);
double procentdva = dva / ((edna + dva) / 100);

Takhle mi to funguje.

Nahlásit jako SPAM
IP: 109.108.119.–
LukoSS
~ Anonymní uživatel
73 příspěvků
1. 4. 2012   #5
-
0
-

Jen dodám vysvětlení proč ten postup v prvním příspěvku nefunguje, i když je na první pohled správný. C# má pravidlo, které vychází z jazyka C, a které zní, že pokud se vykonává operace mezi dvěma celými čísly, výsledek je opět celé číslo. Takže jelikož to dělení vždycky vyjde jako desetinné číslo, tak se ta desetinná část zahodí a zbude 0. Nejsnadnější řešení je jedno z těch čísel přetypovat na desetinný typ, takže stačí ten původní kód upravit například takto:

double procentjedna = ((float)edna/(dva+edna))*100;
double procentdva = ((float)dva/(dva+edna))*100;
Nahlásit jako SPAM
IP: 88.103.252.–
amertak0
Návštěvník
1. 4. 2012   #6
-
0
-

   

Random localhost = new Random();

Toto ti generuje vždy jiné výsledky? Není lepší tam hodit aspoň nějaký seed, který je vždy unikátní? Např. DateTime.Now.Ticks ;)

Nahlásit jako SPAM
IP: 80.251.241.–
LukoSS
~ Anonymní uživatel
73 příspěvků
1. 4. 2012   #7
-
0
-
Nahlásit jako SPAM
IP: 88.103.252.–
amertak0
Návštěvník
1. 4. 2012   #8
-
0
-

Tak to je zajímavé, jelikož když sem Random používal dřív, tak sem dostával pořád stejné výsledky. Divné.

Nahlásit jako SPAM
IP: 80.251.241.–
davous2670
Newbie
1. 4. 2012   #9
-
0
-

#8 amertak
Tak to je hodně divné   

Nahlásit jako SPAM
IP: 109.108.119.–
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, 76 hostů

Podobná vlákna

Podíl polí — založil matesomg

Podíl vektorů — založil _Radek_

Procentuální zastoupení prohlížečů — založil Anonymní uživatel

Procentuální změna SQL — založil Radek

 

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