Jednoduchý výpočet úhlu tg – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jednoduchý výpočet úhlu tg – Java – Fórum – Programujte.comJednoduchý výpočet úhlu tg – Java – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
drnec80
Duch
3. 10. 2012   #1
-
0
-

Zdravím kolegové,

Jsem začátečním a snažím se o napsání obyčejného programu pro výpočet úhlu.

Podstatou je vstup čísla z klávesnice které je posléze prevedeno na radiány a pak pomocí funkce Math.tg() je vypoctena tangenta. Ošetřena je i varianta, kdy je zadáno záporné číslo ze kterého když se tak stane jednoduse udelam absolutni hodnotu a hotovo. Do tohoto bodu jsem program bez problemu napsal a rozchodil! Na problem jsem ovsem narazil kdyz jsem chtel jeste osetril liché násobky 90 pro ktere tangenta neni definovana! snazil jsem se pouzit cyklus for ale nevim...asi delam neco spatne! :(

vsem dekuju za pomoc

Nahlásit jako SPAM
IP: 90.176.116.–
liborb
~ Redaktor
+18
Guru
3. 10. 2012   #2
-
0
-

Takové věci lze řešit výsledkem dělení a/nebo výsledkem zbytku po dělení.

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.217.–
drnec80
Duch
3. 10. 2012   #3
-
0
-

#2 liborb
jo no jo! takze to proste budu delit 90 dokud nezbyde mensi cislo jak delital nebo 0. pouzil bych teda for je to tak? jak ale oznacit jenom ty liche nasobky? osobne bych v tom for cyklu zavedl novou promenou, ktera by se pri kazdem pruchodu cyklem zvetsila o jednicku! vysledkem z teto promene by tedy byl pocet kterym program delil a v pripade ze vyjde liche cislo tak vypise ze tg neni definovan! slo by?

Nahlásit jako SPAM
IP: 90.176.116.–
Řešení
liborb
~ Redaktor
+18
Guru
4. 10. 2012   #4
-
+1
-
Zajímavé
Vyřešeno Nejlepší odpověď

Cyklus je zde zbytečný - předpokládejme, že stupně, co zadává uživatel, se ukládají do proměnné dStupne:

double dDiv = dStupne / 90.0;
int nDiv = (int)dDiv;

// jsou stupně bezezbytku dělitelné 90?
if (dDiv == (double)nDiv) {
// ano je a je to lichý násobek?
if ((abs(nDiv) % 2) == 1) {
// ano je
}
}

Tak bych nějak viděl princip :)

Zasláno z mobilního telefonu.

Nahlásit jako SPAM
IP: 82.145.208.–
sleepy0
Stálý člen
4. 10. 2012   #5
-
0
-

Ako spravne vravis tangenta je nespojita (nespojitost druheho druhu) prave pre cisla (2*n+1)*pi/2 pre n element Z. Cize stci nejako efektivne odhalit tuto mnozinu. Napr. majme uhol alfa:

1. overenie ze {2*alfa/pi = k, k patri Z}.

2. ak sa k = 2*n + 1, n patri Z, tak sa tam nachadaza nespojitost. To zistis napriklad tak ze sa pozres co ti dava k%2=m, m={0,1}

3. Ak m=0 mozes ratat, ak m = 1 cislo vyhodis a zkonstatujes ze lim alpha->k*pi/2 tan(alpha) = +- inf. (nemal by som to takto pisat ale dufam ze to pochopis), alebo predsa len pre lubovolne K element R Existuje take deltaOkolie bodu pi/2*k ze pre kazde alpha element deltaOkolie plati, ze: tan(alpha)>K.

Inak ako ti radil liborb. nepouzivaj absolutnu hodnotu je ti zbytocna. Spocitaj si radsej rovno ((pi/2) + (alpha%(pi/2)))%(pi/2) --->[0,pi/2) takze sa tu znova elegantne vyhnes hodnote pi/2. Akurat ze pocitac nerozozna kedy je vysledok inf. a kedy 0 ;). Ale to mozes zasa osetrit vyssie uvedenym sposobom.

Btw. v Jave mas v Math taku peknu metodu ze Math.tan() ktora toto vsetko zvlada.

Nahlásit jako SPAM
IP: 158.195.195.–
drnec80
Duch
5. 10. 2012   #6
-
0
-

#4 liborb
no jasne! kdyz pouziju modulo tak vlastne zjistim jestli je zbytek po deleni licej nebo sudej a podle toho program pojede uz to co ma! :) je to mnohem jednoduzsi nez muj napad s cyklama! :)) dekuju!

Nahlásit jako SPAM
IP: 147.228.183.–
drnec80
Duch
5. 10. 2012   #7
-
0
-

vyreseno!!! dekuju uzivatelum liborb a sleepy za pomoc pri reseni! ;)

Nahlásit jako SPAM
IP: 147.228.183.–
hurtajz
~ Anonymní uživatel
1 příspěvek
7. 10. 2012   #8
-
0
-

#1 drnec8
Skusil bych třeba podmínku if

if(uhel%(math.pi/2) == 0){
	//vypsat, že není definováno
}else{
	//vypočítat úhel
}
Nahlásit jako SPAM
IP: 85.71.232.–
drnec80
Duch
8. 10. 2012   #9
-
0
-

#8 hurtajz
jj presne takhle jsem to nakonec napsal! pouzil jsem podminku if a taky modulo! ale i tak dekuju za pomoc!

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

Podobná vlákna

Vypocet uhlu pomoci souradnic — založil silent

Jednoduchy for — založil Durza

Jednoduchý košík — založil mich

Jednoduchý dotaz — založil Martin

Moderátoři diskuze

 

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