Forum / Grundlagen des Programmierens / 2. Hausübung
2. Hausübung
Hallo Leute!
Hat sich von euch schon jemand die Bsp aus dem Rep angschaut??? Soweit ich weiß hat der Tutor gemeint dass er diese mit Kommentaren versieht um diese verständlicher zu machen, oder irre ich mich???
mfg
hallo! hab jetzt mal die ersten vier bsp fertig und sie funktionieren sowiet! falls jedoch noch jemanden fehler auffallen bitte melden
bsp1
import java.util.Scanner;
/**
*
* @author markus
*/
public class Bsp1_1127744_2 {
public static void main(String[] args) {
Scanner zahl = new Scanner(System.in); //Scanneraufruf
float u , f; //double variablen für gleitkomma
float[] a = new float[2]; //double array mit länge 2
System.out.println("Läne eingeben: ");
a[0] = zahl.nextFloat(); //einläsen der länge ins array
System.out.println("Breite eingeben: ");
a[1] = zahl.nextFloat(); //einlesen der breite
f = Flaeche(a); //f= rückgabewert der flächenmethode mit parameter a
System.out.println("Die Fläche beträgt: "+f);
u = Umfang(a); //u= rückgabewert der umfangmethode
System.out.println("der Umfang beträgt: "+u);
}
private static Float Umfang (float a[]){ /*umfangmethode rückgabewert double
*und parameter double array a
*privat da die methode nur in
*dieser klasse verwendet wird*/
float u; //lokale variable u
u = 2*(a[0]+a[1]); //berechnung des umfanges
return u; //rückgabe von u
}
private static float Flaeche (float a[]){ //flächenmethode rückgabewert double
float f; //lokale variable
f=a[0]*a[1]; //berechnung
return f; //rückgabe
}
}
\n~~~
bsp2:
~~~\n
import java.util.Scanner;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author markus
*/
public class Bsp2_1127744_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double a , b;
System.out.println("Bitte geben Sie die X Koordinate des ersten Vektors ein:");
a = sc.nextDouble();
System.out.println("Bitte geben Sie die Y Koordinate des ersten Vektors ein:");
b = sc.nextDouble();
Vektor_2D v1 = new Vektor_2D(a,b);
v1.Laenge();
System.out.println("Bitte geben Sie die X Koordinate des zweiten Vektors ein:");
a = sc.nextDouble();
System.out.println("Bitte geben Sie die Y Koordinate des zweiten Vektors ein:");
b = sc.nextDouble();
Vektor_2D v2 = new Vektor_2D(a,b);
v2.Laenge();
System.out.println("Bitte geben Sie die X Koordinate des dritten Vektors ein:");
a = sc.nextDouble();
System.out.println("Bitte geben Sie die Y Koordinate des dritten Vektors ein:");
b = sc.nextDouble();
Vektor_2D v3 = new Vektor_2D(a,b);
v3.Laenge();
//Addition alle 3 Vektoren + Ausgabe
v2.Vektoraddition(v3); //Addition V2+V3 - Wert in V2 gespeichert
v1.Vektoraddition(v2); //Addition V1+(V2+V3) ... vom vorigen Schritt (V2+V3)
System.out.print("der neue Vektor lautet X: "+v1.x+" Y: "+v1.y);
v1.Laenge();
}
}
class Vektor_2D {
double x, y;
public Vektor_2D() {
this.x=1;
this.y=1;
}
public Vektor_2D(double a, double b){
this.x=a;
this.y=b;
}
void Laenge(){
double l;
l=Math.pow(Math.pow(this.x,2)+Math.pow(this.y,2),0.5);
System.out.println("Die Länge des Vektors beträgt: "+l);
System.out.println();
}
//Klasseneigene Methoden
void Vektoraddition(Vektor_2D v)
{
this.x = this.x + v.x; //Addiert Vektor v zum aufgerufenen Vektor
this.y = this.y + v.y;
}
}
\n~~~
bsp3:
~~~\n
import java.util.Scanner;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author markus
*/
public class Bsp3_1127744_2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double a , b, c;
System.out.println("Bitte geben Sie die X Koordinate des ersten Vektors ein:");
a = sc.nextDouble();
System.out.println("Bitte geben Sie die Y Koordinate des ersten Vektors ein:");
b = sc.nextDouble();
System.out.println("Bitte geben Sie die Z Koordinate des ersten Vektors ein:");
c = sc.nextDouble();
Vektor_3D v1 = new Vektor_3D(a,b,c);
v1.Laenge();
System.out.println("Bitte geben Sie die X Koordinate des zweiten Vektors ein:");
a = sc.nextDouble();
System.out.println("Bitte geben Sie die Y Koordinate des zweiten Vektors ein:");
b = sc.nextDouble();
System.out.println("Bitte geben Sie die Z Koordinate des Zweiten Vektors ein:");
c = sc.nextDouble();
Vektor_3D v2 = new Vektor_3D(a,b,c);
v2.Laenge();
System.out.println("Bitte geben Sie die X Koordinate des dritten Vektors ein:");
a = sc.nextDouble();
System.out.println("Bitte geben Sie die Y Koordinate des dritten Vektors ein:");
b = sc.nextDouble();
System.out.println("Bitte geben Sie die Z Koordinate des dritten Vektors ein:");
c = sc.nextDouble();
Vektor_3D v3 = new Vektor_3D(a,b,c);
v3.Laenge();
//Addition alle 3 Vektoren + Ausgabe
v2.Vektoraddition(v3); //Addition V2+V3 - Wert in V2 gespeichert
v1.Vektoraddition(v2); //Addition V1+(V2+V3) ... vom vorigen Schritt (V2+V3)
System.out.print("der neue Vektor lautet X: "+v1.x+" Y: "+v1.y+" Z: "+v1.z);
v1.Laenge();
}
}
class Vektor_3D extends Vektor_2D{
double z;
public Vektor_3D(){
super();
this.z=1;
}
public Vektor_3D(double x, double y, double z){
super(x,y);
this.z=z;
}
void Vektoraddition(Vektor_3D v)
{
this.x = this.x + v.x;
this.y = this.y + v.y;
this.z = this.z + v.z;
}
@Override
void Laenge(){
double l;
l=Math.pow(Math.pow(this.x,2)+Math.pow(this.y,2)+Math.pow(this.z,2),0.5);
System.out.println("Die Länge des Vektors beträgt: "+l);
System.out.println();
}
}
\n~~~
bsp4:
~~~\n
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Collections;
/**
*
* @author markus
*/
public class Bsp4_1127744_2 {
public static void main(String[] args) {
ArrayList<Vektor_3Dcomparable> vektoren = new ArrayList();
Scanner sc = new Scanner(System.in);
double a, b, c;
System.out.println("Bitte geben Sie die X Koordinate des ersten Vektors ein:");
a = sc.nextDouble();
System.out.println("Bitte geben Sie die Y Koordinate des ersten Vektors ein:");
b = sc.nextDouble();
System.out.println("Bitte geben Sie die Z Koordinate des ersten Vektors ein:");
c = sc.nextDouble();
vektoren.add(new Vektor_3Dcomparable(a,b,c));
System.out.println("Bitte geben Sie die X Koordinate des zweiten Vektors ein:");
a = sc.nextDouble();
System.out.println("Bitte geben Sie die Y Koordinate des zweiten Vektors ein:");
b = sc.nextDouble();
System.out.println("Bitte geben Sie die Z Koordinate des Zweiten Vektors ein:");
c = sc.nextDouble();
vektoren.add(new Vektor_3Dcomparable(a,b,c));
System.out.println("Bitte geben Sie die X Koordinate des dritten Vektors ein:");
a = sc.nextDouble();
System.out.println("Bitte geben Sie die Y Koordinate des dritten Vektors ein:");
b = sc.nextDouble();
System.out.println("Bitte geben Sie die Z Koordinate des dritten Vektors ein:");
c = sc.nextDouble();
vektoren.add(new Vektor_3Dcomparable(a,b,c));
System.out.println("Bitte geben Sie die X Koordinate des vierten Vektors ein:");
a = sc.nextDouble();
System.out.println("Bitte geben Sie die Y Koordinate des vierten Vektors ein:");
b = sc.nextDouble();
System.out.println("Bitte geben Sie die Z Koordinate des vierten Vektors ein:");
c = sc.nextDouble();
vektoren.add(new Vektor_3Dcomparable(a,b,c));
System.out.println("Bitte geben Sie die X Koordinate des fünften Vektors ein:");
a = sc.nextDouble();
System.out.println("Bitte geben Sie die Y Koordinate des fünften Vektors ein:");
b = sc.nextDouble();
System.out.println("Bitte geben Sie die Z Koordinate des fünften Vektors ein:");
c = sc.nextDouble();
vektoren.add(new Vektor_3Dcomparable(a,b,c));
System.out.println("Vor dem sortieren:");
for(int i = 0; i < vektoren.size() ; i++){
vektoren.get(i).Laenge();
}
Collections.sort(vektoren);
System.out.println("Nach dem sortieren: ");
for(int i = 0; i < vektoren.size() ; i++){
vektoren.get(i).Laenge();
}
}
}
class Vektor_3Dcomparable extends Vektor_3D implements Comparable<Vektor_3Dcomparable>{
public Vektor_3Dcomparable(){
super();
}
public Vektor_3Dcomparable(double x, double y, double z){
super(x,y,z);
}
@Override
public int compareTo(Vektor_3Dcomparable v) {
if(Math.pow(Math.pow(this.x,2)+Math.pow(this.y,2)+Math.pow(this.z,2),0.5) ==
Math.pow(Math.pow(v.x,2)+Math.pow(v.y,2)+Math.pow(v.z,2),0.5)) return 0;
if(Math.pow(Math.pow(this.x,2)+Math.pow(this.y,2)+Math.pow(this.z,2),0.5) <
Math.pow(Math.pow(v.x,2)+Math.pow(v.y,2)+Math.pow(v.z,2),0.5)) return -1;
else return 1;
}
}
\n~~~
ok danke^^ aber die Längen welcher zwei Objekte? da steht fünf Vektoren, aber meine Klasse ist ja auf drei Vektoren ausgelegt oO
Du kannst einfach fünf Vektoren manuell im Code definieren. Musst nichts einlesen. Diese fünf werden dann nacheinander paarweise verglichen und in eine Reihenfolge gebracht.
Also braucht man eigentlich nur eine Methodenberechnung, nämlich jene die die Länge eines Vektors berechnet. Das Resultat davon wird dann für die Sortierung benötigt.
@ ranzmann muss mandie vektor2d,vektor3d... in neue klassen schreiben oder darf man das so anhängen unten ?
k.a. ich finde die angaben bei dieser hü sehr schwammig! werde jetzt die programme nicht mehr großartig ändern
Ich hab jetzt gerade ein Problem bei der Gesamtlänge (ja, noch immer Bsp 2, ich hab zwischenzeitlich resigniert >.<). Jedenfalls, gebe ich für die Vektoren 1,0; 0,1; 1,1; ein, dann erhalte ich nicht das richtige Ergebnis - woran liegts? Sind Nullen verboten?
Die Länge des zweiten Vektors beträgt 1.0
Die Länge des dritten Vektors beträgt 1.4142135623730951
Die Gesamtlänge der Vektoren beträgt 2.8284271247461903\n~~~
Die der einzelnen Vektoren sind ja so auch richtig, aber summiere ich die auf, ergibt sich ja 3,414... :/
Kannst du über der public class, drunter oder in ein eigenes File schreiben. Beim Build & Clean macht netbeans so oder so aus jeder Class ein eigenes File, aber wie du es machst bleibt dir überlassen.
Veronica, 0 ist eigentlich nicht verboten. Schon mal mit Koordinaten ohne null probiert?
edit: Dann hast du vermutlich einen Fehler bei der Gesamtlängenberechnung, wenn die Einzellängen stimmen. Parameter werden alle übergeben ?
Das is ja das - mit irgendwelchen anderen Zahlen passts komischer Weise. Ich hätt jetzt eig auch keinen Fehler entdeckt .. hmpf hmpf
so wie ich die längenberechnung verstanden hab soll man nicht die einzelnen längen addieren sonder zuerst die vektoren addieren und von diesem neuen vektor die länge berechnen
der neu vektor wäre dann bei deinem bsp x:2 y:2 l=(x²+y²)^1/2=(4+4)1/2=2,82....
Stimmt, hat ranzmann recht, ist mir gar nicht aufgefallen.
Vektoren addieren und dann die Länge berechnen.
Ooooh, Mann! >.< Dankeschön! Hätten wir das auch geklärt haha, das hatt ich falsch verstanden!
So... BSP nummer 2.5... (dank an alex ;) )
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Martin Holzer
*/
public class Bsp2_5_1127976_2 {
}
class Balkenbieger{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
double f=0;
char Wahl,nochmal; // Wahl= Variable für switch;
do
{
Balken B = new Balken();
System.out.println("Dieses Programm berechnet anhand von Ihnen eingegebenen Daten die maximale Durchbiegung eines Balken");
//Eingabe der Parameter
System.out.println("Bitte geben sie nun die Querschnittsgroesse a in [mm] ein:");
B.setBreite(s.nextDouble());
System.out.println("Bitte geben sie nun die Laenge l des Traegers in [mm] ein:");
B.setLaenge(s.nextDouble());
System.out.println("Bitte geben sie nun die auf den Traeger wirkende Kraft F in [N] ein ein:");
B.setKraft(s.nextDouble());
//Wahl des Querschnitts
System.out.println("\nWaehlen sie den von Ihnen gewuenschten Querschnitt: \n[q]uadratisch \n[k]reisfoermig \n[i]-Träger");
Wahl = s.next().charAt(0);
B.setWahl(Wahl);
//Wahl des Traegertyps
System.out.println("Waehlen sie nun bitte den von Ihnen gewuenschten Traegertyp."
+ " \n[K]ragtraeger mit Last am Endpunkt \n[B]eidseitig gelagert, Krafteinleitung mittig ");
Wahl = s.next().charAt(0);
//Traegertyp verändern und f Berechnen
switch(Wahl){
case 'K'|'k':
Kragtraeger K=new Kragtraeger();
K.setParameter(B);
f= K.KragtraegerMaxDb();
break;
case 'B'|'b':
Auflagerbalken A=new Auflagerbalken();
A.setParameter(B);
f= A.AuflagerbalkenMaxDb();
break;
default:
System.out.println("Houston, wir haben ein Problem");
}
System.out.println("\nDie maximale Durchbiegung betraegt: "+f+"mm");
System.out.println("Wollen sie eine erneute Berechnung durchfuehren? [J]a / [N]ein");
nochmal=s.next().charAt(0);
}
while(nochmal=='J' | nochmal=='j');
}
}
abstract class Querschnitt {
double I;
double Quadrat(double a){return I = Math.pow(a,4)/12;}
double Kreis(double a){return I = Math.pow(a,4)*Math.PI/64;}
double ITraeger(double a){return I = Math.pow(a,4)*10/144;}
}
class Balken extends Querschnitt{
protected double I=0,F,l,a,E=210000;
public void setBreite(double Breite){this.a = Breite;}
public void setLaenge(double Laenge){this.l = Laenge;}
public void setKraft(double Kraft){this.F = Kraft;}
public void setWahl(char Wahl){
switch(Wahl){
case 'q'|'Q': I = Quadrat(a); break;
case 'k'|'K': I = Kreis(a); break;
case 'i'|'I': I = ITraeger(a); break;
default : System.out.println("Keine Gültige Eingabe");
}
}
public void setParameter(Balken current){
this.E = current.E;
this.a = current.a;
this.l = current.l;
this.F = current.F;
this.I = current.I;
}
}
class Kragtraeger extends Balken{
double KragtraegerMaxDb(){
double f=(F*(Math.pow(l,3)))/(3*E*I);
return f;
}
}
class Auflagerbalken extends Balken{
double AuflagerbalkenMaxDb(){
double f=(F*Math.pow(l,3))/(48*E*I);
return f;
}
}
\n~~~
Dieter @Ashnagzar
Maschinenbau · Technische Universit...
Der Befehl "implements Comparable" macht es möglich mittels der compareTo-Methode eine Elemente paarweise miteinander zu vergleichen.
Man muss im Code folgende Utilities laden, damit es funktioniert