Diskuze: Goniometrické funkce
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 16 zpráv z 16.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Ještě jsem zapomněl napsat co mi tam nefunguje a s čím vlastně
potřebuju poradit. Úhel funguje pouze do 90° potom hází chybný informace a
funkce kromě sinusu taky ukazujou blbosti, ale vůbec netuším proč 
Zkoušel jsem to spustit a ukazuje to jiný čísla než kalkulačka 
Máš nějaký konkrétní hodnoy, které jsou špatně?
Jaký úhel? Jaká funkce? Jaká hodnota z programu? Jaká hodnota z kalkulačky?
Všechny funkce jsem pořádně vyzkoušel a zjistil jsem že fungují, kromě toho když má být výsledek 0 nebo nekonečno. Tím mám na mysli např. sin 180°,sin 0°,cos 90°,tg 90°,atd. Nevím jakým příkazem tomu pomoci aby i tyto funkce ukazovali správnou hodnotu 0.
Ten výsledek není přesně 0, ale třeba
0,000000000000000122460635382238, protože procesory nemají přesnou
goniometrickou funkci, ale jen jejich aproximaci ... takže by ti mělo stačit
ten výsledek zaokrouhlit na nějaký počet des míst 
Funkce sinus a cosinus by měly fungoval pro libovolný úhel. Zrovna tak výsledke nula bude ok. To si pořádně ověř, v tom problém nebude.
Problém je ale s funkcí tangens, resp. cotangens. Ta z matematického hlediska není pro některé úhly definovaná. Ona se totiž nechá spočítat takhle:
tan(uhel) = sin(uhel) / cos(uhel)
A tady nastává problém v okamžiku, kdy cos(uhel) == 0, protože dělení nulou.
Jedna z možností, jak to řešit, je třeba ověřit si, že cosinus toho uhlu není 0. Pokud je, tak vypsat něco ve smyslo, že pro tenhle úhel není funkce tangens definovaná.
Cotangens funguje obdobně. Jen tam na nulu nebudeš ověřovat cosinus, ale sinus.
Ano, výsledek mi vždy vyjde 1,12...... na - 16tou, takže stačí zaokrouhlit. Děkuju za radu.
Hele s tangens mi ale normálně funguje, teda až na to nekonečno. Math.Tan() funguje spolehlivě a cotangens jsem v počítal 1/tangens. Ještě vyzkouším tvůj způsob. Ještě vymyslet příkaz který zjistí kdy je cos úhlu nula.
Přiznávám, goneometrické funkce v dotnetu snad vůbec nepoužívám, takže neznám jejich chování kromě toho, co se píše v dokumentaci.
Hádám, že pro nedefinovaný úhly to vrací double.NaN , popř. nějakou šíleně velkou nebo malou hodnotu, protože to vlivem nepřesnosti doublu zrovna tak vychází. Takže by možná stačílo kontrolovat, jestli tangens nevrací NaN...
To, co jsem psal, spíš vychází z toho, co si pamatuju z matematiky ze školy.
Každopádně to, na co jsi se nepřímo ptal, byla opravdu nepřesenost
doublu. To mě vůbec nenapadlo na to upozornit - ze zkušenosti vím, že tyhle
chyby fakticky vadí jen když počítáš peníze 
Děkuju za všechny rady. Nastavil jsem tam zaokrouhlování takže už mi to
ukazuje i 0. Ještě poslední otázka
. Dalo by se nějak nastavit
abych se z určitého místa vrátil zpět na určité místo. V mém zadání
by to znamenalo to, že kdyby uživatel nevybral ani jednu z funkcí ale napsal
by např. 5 tak aby na něj vyskočila věta "Zadej prosím znovu a správně
číslo funkce" a vrátilo by ho to zpět na výběr funkcí?
Dalo by se nějak nastavit abych se z určitého místa vrátil zpět na určité místo.
Takhle se vysloveně ptáš na jednu fičůru, která je snad i v C#, ale je tak trochu tabu. V rozáhlejším programu je to totiž cesta do pekla.
Takže popíšu obvyklé řešení:
Tyhle věci se bežně řeší cyklem. Cyklus je něco, co ti opakovaně spouští nějaký kód, dokud je splněna nějaká podmínka. Existuje několik druhů cyklů. V tomhle případě by se nabízelo to celé strčit do do-while. Tam se podmínka ověřuje až na konci, takže cyklus proběhne alespoň jednou. Takže stačí zajistit, aby podmínka byla splněna, pokud uživatel zadá neplatnou hodnotu.
do
{
// kod, ktery opakovat
} while(podminka);
takže mezi to "do" a "while" mam dát úplně celý program
Ano, to je asi nejjednodušší.
Alternativně můžeš celý program vyseparovat do funkce vedle a do cyklu dát jen volání funkce.
A ještě alternativně: můžeš ověřit, že uživatel zadal číslo v očekávaném rozsahu před tím, než to celé spuštíš.
Děkuju, zvolím nejjednodušší metodu. Hodím před volbou funkce to "do"
a nakonec "while". Díky za všechny rady 
Zobrazeno 16 zpráv z 16.