Pomozte s programováním v Javě

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

Uživatelský avatar
Funstorm007
Level 5
Level 5
Příspěvky: 2031
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

Re: Pomozte s programováním v Javě

Příspěvekod Funstorm007 » 25 říj 2011 14:31

OK, na to se podívám později. Zase jsem se ale zasekl. Mám program:

Kód: Vybrat vše

import java.util.*;

public class XXX {
   
   public static void main(String[] args) {
      Scanner sc = new Scanner(System.in);
      System.out.print("Zadej cele cislo: ");
      int x = sc.nextInt();
      System.out.println("---Vysledky---");
      if (x < 0) {
         System.out.print("tan(" + Math.abs(x) + ") = " + Math.tan(Math.toRadians(Math.abs(x))));
      }
      else if (x == 90) {
         System.out.print("tangens nedefinovan");
         }
      else {
         System.out.print("tan(" + x + ") = " + Math.tan(Math.toRadians(x)));
      }
   }
}


A u druhé podmínky kdy je tam zadáno x == 90 potřebuju, aby to neplatilo jen pro 90° ale pro všechny liché násobky 90°. 90, 270, 450, 630, ...
Naposledy upravil(a) Funstorm007 dne 01 lis 2011 12:17, celkem upraveno 1 x.

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Pomozte s programováním v Javě

Příspěvekod CZechBoY » 25 říj 2011 15:46

kosinus má periodu 180°C a při 90°+k*180° má nulu ;)
if(cos(x)==0)
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Pomozte s programováním v Javě

Příspěvekod faraon » 25 říj 2011 15:52

Tohle by mělo být rychlejší než počítání goniometrické funkce:

Kód: Vybrat vše

if (!((x-90)%180))
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
Funstorm007
Level 5
Level 5
Příspěvky: 2031
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

Re: Pomozte s programováním v Javě

Příspěvekod Funstorm007 » 25 říj 2011 16:28

Mno, když použiju else if (Math.cos(x) == 0) a zadám třeba 90 tak mi to něco vypočítá což nemá... No a u if (!((x-90)%180)) mi to ke znaku "!" hází nějakou chybu...

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Pomozte s programováním v Javě

Příspěvekod faraon » 25 říj 2011 19:56

Tak zkus

Kód: Vybrat vše

if (0==((x-90)%180))
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
Funstorm007
Level 5
Level 5
Příspěvky: 2031
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

Re: Pomozte s programováním v Javě

Příspěvekod Funstorm007 » 25 říj 2011 20:34

Jo, to je vončo, už to funguje jak má. Děkuju. Ty asi náhodou nevíš kde je zakopanej pes s tou tečkou viď? :wink:

Ještě tu mám tento program:

Kód: Vybrat vše

import java.util.*;

public class XXX {
  static final int POCET = 3;
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Zadej 1. cislo: ");
    int a1 = sc.nextInt();
    System.out.print("Zadej 2. cislo: ");
    int a2 = sc.nextInt();
    System.out.print("Zadej 3. cislo: ");
    int a3 = sc.nextInt();
    int suma = a1 + a2 + a3;
    System.out.println("Prumer = " + prumer);
  }
}


Zde se má počítat kvadratický průměr tří čísel podle tohoto vzorce:
Obrázek
Abych pravdu řekl, ani nevým, kde bych měl začít... :D

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Pomozte s programováním v Javě

Příspěvekod faraon » 25 říj 2011 21:00

Já Javu neovládám, beru to podle Céčka, ze kterého je odvozená, takže netuším co tu tečku dělá. Ale tipnul bych že si to interpret bere podle nastavení systému, takže pokud si to neuděláš sám, tak to asi změnit nepůjde. Jestli trváš na tečce, budeš to muset napsat v Céčku :-D

Ten vzoreček jde trochu zjednodušit, najdeš ho i s vysvětlením třeba tady: http://cs.wikipedia.org/wiki/Kvadratick ... AFm%C4%9Br

Nevím jak se přesně bude jmenovat funkce pro druhou odmocninu, mohlo by to vypadat nějak takhle:

Kód: Vybrat vše

prumer = sqrt( (a1*a1 + a2*a2 + a3*a3) / 3)
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
Funstorm007
Level 5
Level 5
Příspěvky: 2031
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

Re: Pomozte s programováním v Javě

Příspěvekod Funstorm007 » 26 říj 2011 01:03

Jo jo, podle toho zjednodušeného vzorečku už se s tím dá pracovat. Modifikoval jsem to do jednoho řádku takto:

Kód: Vybrat vše

System.out.println("Kvadraticky prumer = " + Math.sqrt((a1*a1 + a2*a2 + a3*a3)/3));

No, a něco to opravdu počítá a možná i správně jenže to na mě pořát fluše výsledek jen 4.0 místo správného 4.082482904638631. Nevím, nejspíš se to nějak zaokrouhluje, ne?

BTW, tak mě napadá, jak jsme tu mluvili o té desetinné tečce, pokud je to opravdu bráno ze systému, zobrazovala by se čárka nebo eventuelně tečka (podle toho jak je to teda nastavené) všude ne? Myslím tím, jako že bych vkládal vstupní hodnoty s desetinnou čárkou a s čárkou by se mi i zobrazovali ve výsledku ne? Ovšem v mém případě hodnoty zadávám s desetinnou čárkou ale vrací se mi s tečkou.

Uživatelský avatar
faraon
Master Level 8.5
Master Level 8.5
Příspěvky: 7397
Registrován: prosinec 10
Pohlaví: Muž
Stav:
Offline

Re: Pomozte s programováním v Javě

Příspěvekod faraon » 26 říj 2011 07:51

Zkus tam na konci místo celé trojky dát /3.0
Jestli máš ty proměnné ai celočíselné, tak ti to možná bude počítat celočíselný výsledek. Nebo použij nějaké přetypování, jestli tu je jako v C.

Tak to s tou tečkou teda nevím, leda to fakt dát do řetězce a přepsat si to na svoje ;-) Ale když si program zapamatuje co bylo na vstupu (tečka/čárka), tak může stejný typ použít i na výstupu! Ať uživatel dostane to co se mu líbí...
"Král Lávra má dlouhé oslí uši, král je ušatec!

(pravil K. H. Borovský o cenzuře internetu)

Uživatelský avatar
Funstorm007
Level 5
Level 5
Příspěvky: 2031
Registrován: říjen 08
Pohlaví: Muž
Stav:
Offline

Re: Pomozte s programováním v Javě

Příspěvekod Funstorm007 » 26 říj 2011 13:20

Tečka vyřešena a opravdu to není nic světaborného... :D Jednoduše stačlo přidat ke třídě Scanner lokalizační řádek sc.useLocale(Locale.US); a už to funguje jen na tečkách. S tečkami to zadávám a s tečkami to na mě zpětně vyskakuje...

Mno, když dám místo 3 => 3.0, opravdu to vyhodí číslo s více desetinnými místy ale pořád je to málo. :D Totiž, chybí mi na konci ta jednička za trojkou... :D

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: Pomozte s programováním v Javě

Příspěvekod CZechBoY » 26 říj 2011 15:58

když dáš 22/7 tak to napíše 3.0 nebo jak to myslíš?
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW

Uživatelský avatar
kalkub
Level 2
Level 2
Příspěvky: 168
Registrován: květen 11
Bydliště: Hradec Králové
Pohlaví: Muž
Stav:
Offline

Re: Pomozte s programováním v Javě

Příspěvekod kalkub » 26 říj 2011 16:06

mas tam int :) zkus double :)


Zpět na “Programování a tvorba webu”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů