import eprog.*; // Autor: Martha@Kaltenecker // Matr.Nr.: 0125193 // Beispiel: 1 // Beispielnummer: 1104 // Beschreibung: // Die Seitenlängen eines Dreiecks werden eingelesen. // Das Programm soll überprüfen, ob es sich um ein rechtwinkeliges Dreieck handelt // bzw. eine fehlende Seitenlänge auf ein rechtwinkeliges Dreieck ergänzen und den // Flächeninhalt ausgeben. public class drei extends EprogIO { public static void main(String [] args) { boolean fehlerKZ=false; // Zur Überprüfung ob alle Eingaben richtig sind. double aKathete=0.0; // Gibt Kathete a an. double bKathete=0.0; // Gibt Kathete b. an. double cHypothenuse=0.0; // Gibt Hypothenuse c an. double AFlaeche=0.0; // Gibt Fläche A eines rechtwinkeligen Dreiecks an. double Variable=0.0; // Definiert eine Variable try // Eingabe falscher Datentypen abfangen (Kathete a). { aKathete=readDouble(); // Kathete a von der Tastatur/file lesen. } catch(EprogException e) { fehlerKZ=true; } try // Eingabe falscher Datentypen abfangen (Kathete b). { bKathete=readDouble(); // Kathete b von der Tastatur/file lesen. } catch(EprogException e) { fehlerKZ=true; } try // Eingabe falscher Datentypen abfangen (Hypothenuse c)). { cHypothenuse=readDouble(); // Hypothenuse c von der Tastatur/file lesen. } catch(EprogException e) { fehlerKZ=true; } if (fehlerKZ) // Enthält der Eingabedatensatz einen ungültigen Datentyp, { println("?"); // so soll einmal das Zeichen "?", gefolgt von einem Zeilenvorschub,ausgegeben werden. } // Überprüfung, ob die drei eingelesenen Seiten ein rechtwinkliges Dreieck ergeben. else if ( (cHypothenuse > 0.0) && (aKathete > 0.0) && (bKathete > 0.0) ) // Wenn alle drei Seiten des Dreiecks größer 0 sind, dann soll mit Hilfe des { Variable= Math.abs(((cHypothenuse*cHypothenuse)-(aKathete*aKathete)-(bKathete*bKathete))/(2*aKathete*bKathete)); // Cosinussatzes überprüft werden ob es sich um ein rechtwinkeliges Dreieck handelt, if ( Variable>=0.3 ) // wobei eine Toleranz von 0.3 erlaubt ist. { println( "KEIN RECHTER WINKEL" ); // Wenn dies nicht der Fall ist, so soll "KEIN RECHTER WINKEL" ausgegeben } else { AFlaeche=(aKathete*bKathete)/2; //Wenn es der Fall ist soll die Fläche berechnet, printFixed( AFlaeche ); //und ausgegeben werden. } } //Überprüfung ob der Inhalt der Datentypen korrekt ist. else if ( ((cHypothenuse == 0.0) && (aKathete == 0.0)) || // Wenn die Hypothenuse c und die Kathete a als Null erfasst wurden ODER ((cHypothenuse == 0.0) && (bKathete == 0.0)) || // wenn die Hypothenuse c und die Kathete b als Null erfasst wurden ODER ((aKathete == 0.0) && (bKathete == 0.0)) || // wenn die Kathtete a und die Kathete b als Null erfasst wurden ODER (aKathete < 0.0) || // wenn die Kathete a kleiner als Null ist ODER (bKathete < 0.0) || // wenn die Kathete b kleiner als Null ist ODER (cHypothenuse < 0.0)|| // wenn die Hyothenuse c kleiner als Null ist ODER (cHypothenuse <= aKathete) && (cHypothenuse > 0.0)|| // wenn die Kathete a größer /gleich der Hypothenuse c ist UND die Hypothenuse c größer als Null ist ODER (cHypothenuse <= bKathete) && (cHypothenuse > 0.0) ) // wenn die Kathete b größer /gleich der Hypothenuse c ist UND die Hypothenuse c größer als Null { println("FALSCHE EINGABE"); //... dann soll "Falsche Eingabe" ausgegeben werden. } else if (cHypothenuse ==0.0) //Wenn nur die Hypothenuse c mit Null erfasst wurde, soll { cHypothenuse=Math.sqrt((aKathete*aKathete)+(bKathete*bKathete)); //die Hypothenuse c errechnet werden und AFlaeche=(aKathete*bKathete)/2; //die Fläche. printFixed( cHypothenuse); //Dann soll die fehlende Hypothenuse c print( " "); //und der Flächeninhalt,beide Werte gerundet, ausgegeben werden. printFixedln( AFlaeche); } else if (aKathete ==0.0) //Wenn nur die Kathete a mit Null erfasst wurde, soll { aKathete=Math.sqrt((cHypothenuse*cHypothenuse)-(bKathete*bKathete));//die Kathete a errechnet werden und AFlaeche=(aKathete*bKathete)/2; //die Fläche. printFixed( aKathete); //Dann soll die fehlende Kathete a print( " "); //und der Flächeninhalt, beide Werte gerundet, ausgegeben werden. printFixedln( AFlaeche); } else if (bKathete ==0.0) //Wenn nur die Kathete b mit Null erfasst wurde, soll { bKathete=Math.sqrt((cHypothenuse*cHypothenuse)-(aKathete*aKathete));//die Kathete b errechnet werden und AFlaeche=(aKathete*bKathete)/2; //die Fläche. //Dann soll die fehlende Kathete b printFixed( bKathete); print( " "); //und der Flächeninhalt, beide Werte gerundet, ausgegeben werden. printFixedln( AFlaeche); } } }