Diskuze: Cos x v C#
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Nevím jak jste daleko v C#, ale tohle je naprosto elementární FOR cyklus:
double x = zadaný_úhel;
double cosinusX = 0;
for(int n = 0; n < pozadovana_presnost; n++)
{
cosinusX += Math.Pow(x, 2*n) / Factorial(2*n);
}
Metodu Factorial() si musíš napsat sám, ta v C# pokud vím není. Ale na Internetu je doslova miliarda takových funkcí, takže si je můžeš okopírovat.
Úhel je zadaný ve stupních. Nejsme v C# zatím nijak daleko ale co si
pamatuju tak nám učitel říkal, že tam je dokonce nějak for cyklus
vloženej do dalšího for cyklu tak sám nevím. Nečekal jsem, že to bude na
čtyři řádky.
Moc děkuju
Tak ještě než dostanete další domácí úkol, tak si projdi seriál o
C#, základní konstrukce:http://www.itnetwork.cz/csharp/zaklady
(snad kromě 1. dílu). Budeš mít život mnohem lehčí
Factorial sa pocita v cykle, tak asi preto.
Stejně jsem se znovu dostal do potíží... I když normálně zadám ten cyklus pro výpočet faktoriálu, tak mi to celý skončí u 2! a dělí jenom dvojkou. Proč? Já už to fakt nedávám
Používaš funkciu pre výpočet faktoriálu?
Použil jsem toto:
static long Factorial(long number)
{
if( number <= 1 )
return 1;
else
return number * Factorial(number - 1);
}
Prostě mi to nechce "sežrat" ten faktoriál (2*n).
static void Main(string[] args)
{Console.WriteLine("Tento program vypočítá kosinus zadaného úhlu s
požadovanou přesností");
Console.Write("Zadejte velikost úhlu v radiánech:");
float a = float.Parse(Console.ReadLine());
Console.Write("Zadejte požadovanou přesnost výpočtu:");
float b = float.Parse(Console.ReadLine());
double x = a;
double cosinusX = 0;
for (int n = 0 ; n < b ; n++)
{
cosinusX = Math.Pow(-1, n) * ( Math.Pow(x, 2 * n) / Factorial(2 * n) );
}
Console.Write("Kosinus zadaného úhlu je:" + Math.Cos(x));
Console.ReadKey();}
static int Factorial(int m)
{
if (m <= 1) return 1;
else return Factorial(m - 1);}
}
}
Může to být takhle a nebo to jenom obchází celý ten program a na konci to spočítá hodnotu pomocí Math.Cos?
Používej tlačítko pro vložení kódu (to </> nahoře, nebo CTRL+K)
Kód se jinak nedá číst.
1. kód
static long Factorial(long number)
{
if( number <= 1 )
return 1;
else
return number * Factorial(number - 1);
}
2. kód
static void Main(string[] args)
{Console.WriteLine("Tento program vypočítá kosinus zadaného úhlu s požadovanou přesností");
Console.Write("Zadejte velikost úhlu v radiánech:");
float a = float.Parse(Console.ReadLine());
Console.Write("Zadejte požadovanou přesnost výpočtu:");
float b = float.Parse(Console.ReadLine());
double x = a;
double cosinusX = 0;
for (int n = 0 ; n < b ; n++)
{
cosinusX = Math.Pow(-1, n) * ( Math.Pow(x, 2 * n) / Factorial(2 * n) );
}
Console.Write("Kosinus zadaného úhlu je:" + Math.Cos(x));
Console.ReadKey();}
static int Factorial(int m)
{
if (m <= 1) return 1;
else return Factorial(m - 1);}
}
}
Zobrazeno 11 zpráv z 11.