Gyakorlati alapok
Pithagorasz tétele egyszerű adatbekéréssel
Pithagorasz tétele talán a legismertebb és egyúttal a leghasznosabb matematikai tétel a világon, olyannyira, hogy például Einstein a fény természetének bizonyításakor is hivatkozott rá:
Derékszögű háromszög leghosszabb oldalának (átfogójának) négyzete
megegyezik a másik 2 oldal (befogók) négyzetösszegével.
Kiszámításához csupán 2 bemeneti adatra van szükségünk, a 2 db oldalhosszra és 2 csomagot kell importálnunk:
-
import java.util.Scanner; - az adatbekéréshoz,
-
import java.math.*; - a gyökvonáshoz.
Az adatbekérő metódus String adattípusban kapja meg a bemeneti adatot, ám nekünk a számítás elindításához valamilyen numerikus típus szükséges. Célszerű a bemeneti adatokat (a és b) és a kimeneti adatokat double típusra deklarálnunk, ezáltal lebegőpontos számokkal is tudunk dolgozni (például 3,456). Ezután a String típusú bemeneti adatot át kell alakítanunk double típusra, amelyet a Double osztály parseDouble() metódusa végez el nekünk. Matematikailag nézve 1 db képletünk van, ezt kell implementálnunk:
a2 + b2 = c2
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Kérem, hogy adja meg az egyik oldalhosszt
(a)!");
String oldal = in.nextLine();
double a = Double.parseDouble(oldal);
System.out.println("Kérem, hogy adja meg az egyik oldalhosszt
(b)!");
oldal = in.nextLine();
double b = Double.parseDouble(oldal);
double cNegyzet = (a * a) + (b * b);
System.out.println("C értéke: " + Math.sqrt(cNegyzet));
}
}
Végeredmény:
Kérem, hogy adja meg az egyik oldalhosszt (a)!
1
Kérem, hogy adja meg az egyik oldalhosszt (b)!
1
C (átfogó) értéke: 1.4142135623730951
A kódban észrevehetjük, hogy a String oldal összetett adattípust egymás után kétszer is felhasználtuk, hiszen az 1. bemeneti adatot azonnal eltároltuk double a változóba.
A kód nem kezeli le azt a jelenséget, ha a 2 bevitt befogóhossz azonos hosszúságú, ám ebben az esetben ez nem probléma, hiszen lehetséges az, hogy derékszögű háromszög 2 befogója azonos hosszúságú legyen.
Természetesen a befogók négyzetre emelése belső függvénnyel is megoldható ((Math.pow(a, 2) + Math.pow(b, 2)), de inkább az egyszerűbb eljárást választottam ((a * a) + (b * b)).
C (átfogó) négyzetgyökvonásáról egy belső függvény (Math.sqrt(cNegyzet)) gondoskodott.