Forum / Grundlagen des Programmierens / 2. Hausübung
2. Hausübung
Hallo, ich mal wieder ein thema auf für die 2.HÜ :D
also zum ersten bsp (größter gemiensamer teiler), ich denke das kann man mit einer while-Schleife lösen!
Hat wer konkrete Vorschläge? ^^
mfg
Hallo Leute!
kurze Frage:
Reicht es bei Beispiel 1 wenn man die Berechnung des ggT einfach in eine andere Klasse (sprich eine Methode) auslagert und sie dann in der main-Methode aufruft oder ist mit einer Funktion (siehe Angabe) was anderes gemeint?
lg
@ andih: Bei Beispiel 4 und 5 hast du dich mit der Berechnungsformel geirrt. Bei 4 gehört einfach nur ein Plus statt einem Minus, bei 5 habe ich als Formel: Math.sqrt(((a.x-b.x)(a.x-b.x))+((a.y-b.y)(a.y-b.y))). Und bei Beispiel 5 fehlt die Bedingung, da
Scanner sc = new Scanner (System.in);
int x,y;
System.out.println("1.Zahl:");
x = sc.nextInt();
System.out.println("2.Zahl:");
y = sc.nextInt();
System.out.println("ggT:"+ggT(x,y));
}
static int ggT (int x,int y){
int ggT =0;
for(int i=x; i>=1; i--){
if(x%i==0 && y%i==0){
ggT=i;
break;
}
}
return ggT;
}\n~~~
Hat jemand Ahnung über Bsp2 ? Welche String Methode sollte man benutzen ?
Hat jemand Ahnung über Bsp2 ? Welche String Methode sollte man benutzen ? String.trim() bietet sich an. String.substring(i) auch.
1.Übung;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int zahl1, zahl2, m, n, r;
Scanner sc = new Scanner(System.in);
System.out.println("Bitte geben Sie die erste Zahl ein:");
zahl1 = sc.nextInt();
System.out.println("");
System.out.println("Bitte geben Sie die zweite Zahl ein :");
zahl2 = sc.nextInt();
System.out.println("");
if(zahl1 >= zahl2){
m= zahl1;
n= zahl2;
}
else{
m = zahl2;
n = zahl1;
}
r = m % n;
while( r != 0){
m = n;
n = r;
r = m % n;
}
System.out.println("Der groesste gemeinsame Teiler von "+ zahl1 + " und " + zahl2 + " ist: " );
System.out.println(n);
}
}\n~~~
Hi, hier sind meine 5 Beispiele. Meiner Meinung nach machen alle das, was sie nach der Angabe nach sollen. Beim 2.Beispiel hätte ich mich vielleicht mit der Worterkennung noch etwas spielen können (z.B. Erkennen von Doppelleerzeichen von Wörtern). Aber da in der Angabe die Annahme getroffen wird, dass alle Eingaben auch in einem richtigen, verarbeitbaren Format eingegeben werden, sehe ich Doppelleerzeichen auch als "falsche Eingabe".
1.Beispiel:
*
* @author Björn Bahr 1027755
*/
import java.util.*;
public class Bsp1_1027755_2 {
public static void main(String Args[])
{
//Hier werden die Zahlen abgefragt.
System.out.println("Bitte geben Sie die erste Zahl an: ");
Scanner sc_Zahl1 = new Scanner(System.in);
int zahl1 = sc_Zahl1.nextInt();
System.out.println("Bitte geben Sie die zweite Zahl an: ");
Scanner sc_Zahl2 = new Scanner(System.in);
int zahl2 = sc_Zahl2.nextInt();
//Hier wird das Ergebniss ausgegeben. Indem auf die Funktion ggt
//zugegriffen wird.
System.out.println("Der größte gemeinsame Teiler beträgt: " + ggt(zahl1, zahl2));
}
//Hier wird in einer Schleife immmer der Divisor mit dem Rest dividiert.
static int ggt(int zahl1, int zahl2)
{
int ggt;
int rest;
if (zahl1 > zahl2)
{
rest = zahl1 % zahl2;
ggt = rest;
while (rest != 0)
{
ggt = rest;
rest = zahl2 % rest;
zahl2 = ggt;
}
}
else
{
rest = zahl2 % zahl1;
ggt = rest;
while (rest != 0)
{
ggt = rest;
rest = zahl1 % rest;
zahl1 = ggt;
}
}
return ggt;
}
}\n~~~
2.Beispiel:
~~~\n/**
*
* @author Björn Bahr 1027755
*/
import java.util.*;
public class Bsp2_1027755_2 {
public static void main (String args[])
{
//Hier wird der Satz abgefragt.
System.out.println("Bitte geben Sie einen Satz ein: ");
Scanner sc_satz = new Scanner(System.in);
String satz = sc_satz.nextLine();
int zaehler = 1;
char vergleich = 'a';
int i = 0;
//Hier wird an der Anzahl der Leerzeichen, die Anzahl der Wörter
//ermittelt
while (i < satz.length())
{
vergleich = satz.charAt(i);
if (vergleich == ' ')
{
zaehler++;
}
i++;
}
System.out.println("Anzahl Wörter: " + zaehler);
}
}\n~~~
3.Beispiel:
~~~\n/**
*
* @author Björn Bahr 1027755
*/
import java.util.*;
public class Bsp3_1027755_2 {
public static void main(String args[])
{
//Hier werden die Koordinaten der Punkte abgefragt und als Array gespeichert
System.out.println("Bitte geben Sie die x-Koordinate vom 1. Punkt an: ");
Scanner sc_x1 = new Scanner(System.in);
int [] punkt1 = new int[2];
punkt1[0] = sc_x1.nextInt();
System.out.println("Bitte geben Sie die y-Koordinate vom 1. Punkt an: ");
Scanner sc_y1 = new Scanner(System.in);
punkt1[1] = sc_y1.nextInt();
System.out.println("Bitte geben Sie die x-Koordinate vom 2. Punkt an: ");
Scanner sc_x2 = new Scanner(System.in);
int [] punkt2 = new int[2];
punkt2[0] = sc_x2.nextInt();
System.out.println("Bitte geben Sie die y-Koordinate vom 2. Punkt an: ");
Scanner sc_y2 = new Scanner(System.in);
punkt2[1] = sc_y2.nextInt();
System.out.println("Bitte geben Sie die x-Koordinate vom 3. Punkt an: ");
Scanner sc_x3 = new Scanner(System.in);
int [] punkt3 = new int[2];
punkt3[0] = sc_x3.nextInt();
System.out.println("Bitte geben Sie die y-Koordinate vom 3. Punkt an: ");
Scanner sc_y3 = new Scanner(System.in);
punkt3[1] = sc_y3.nextInt();
System.out.println("Die Gesamtkantenlänge des beschriebenen Dreiecks beträgt: "
+ "\n" + Kantenlaenge(punkt1[0], punkt1[1], punkt2[0], punkt2[1], punkt3[0], punkt3[1]));
}
//Funktion zur Berechnung der Kantenlänge eines Dreieckes.
static double Kantenlaenge(double x1, double y1, double x2, double y2, double x3, double y3)
{
double l1 = Math.pow(Math.pow(x1-x2,2) + Math.pow(y1-y2,2),0.5);
double l2 = Math.pow(Math.pow(x2-x3,2) + Math.pow(y2-y3,2),0.5);
double l3 = Math.pow(Math.pow(x3-x1,2) + Math.pow(y3-y1,2),0.5);
double kantenlaenge = l1 + l2 +l3;
return kantenlaenge;
}
}\n~~~
4.Beispiel
~~~\n/**
*
* @author Björn Bahr 1027755
*/
import java.util.*;
public class Bsp4_1027755_2 {
public static void main(String args[])
{
//Hier werden die einzelnen Punkte erstellt.
Punkt p1 = new Punkt();
Punkt p2 = new Punkt();
Punkt p3 = new Punkt();
//Hier werden die Punkte zu Linien zusammengefasst.
Linie l1 = new Linie(p1,p2);
Linie l2 = new Linie(p2,p3);
Linie l3 = new Linie(p3,p1);
//Hier wird die Gesamtlänge ausgegäben.
System.out.println("Die Gesamtkantenlänge des beschriebenen Dreiecks beträgt: "
+ "\n" + (l1.getlaenge() + l2.getlaenge() + l3.getlaenge()));
}
}
//Hier wird die Klasse Punkt erstellt.
class Punkt{
int x_koordinate;
int y_koordinate;
static int anzahl = 1;
//Konstruktor
Punkt (){
System.out.println("Bitte geben Sie die x-Koordinate vom Punkt " +anzahl+ " an: ");
Scanner sc_x1 = new Scanner(System.in);
x_koordinate = sc_x1.nextInt();
System.out.println("Bitte geben Sie die y-Koordinate vom Punkt " +anzahl+ " an: ");
Scanner sc_y1 = new Scanner(System.in);
y_koordinate = sc_y1.nextInt();
anzahl++;
}
}
//Hier wird die Klasse Linie erstellt.
class Linie{
Punkt anfang;
Punkt ende;
Linie (Punkt anfang, Punkt ende){
this.anfang = anfang;
this.ende = ende;
}
double getlaenge(){
double laenge = Math.pow(Math.pow(anfang.x_koordinate - ende.x_koordinate,2)
+ Math.pow(anfang.y_koordinate - ende.y_koordinate ,2),0.5);
return laenge;
}
}\n~~~
5.Beispiel:
~~~\n/**
*
* @author Björn Bahr 1027755
*/
import java.util.*;
public class Bsp5_1027755_2 {
public static void main(String args[])
{
//Hier wir die Anzahl der Punkte abgefragt.
System.out.println("Bitte geben Sie die Anzahl der Punkte an: ");
Scanner sc_punktanzahl = new Scanner(System.in);
int punktanzahl = sc_punktanzahl.nextInt();
//Hier wird ein Array zum abspeichern der Punkte erstellt.
point[] punkte = new point[punktanzahl];
//Hier wird das Array initialisiert.
for (int m = 0; m < punktanzahl; m++)
{
punkte[m] = new point();
}
//Hier wird über ein Linien-Array die gesamtlaenge berechnet.
line[] linien = new line[punktanzahl-1];
double gesamtlaenge = 0;
for (int n = 0; n < punktanzahl-1; n++)
{
linien[n] = new line(punkte[n],punkte[n+1]);
gesamtlaenge = gesamtlaenge + linien[n].getlaenge();
}
System.out.println("Gesamtlänge des Linienzuges: "+gesamtlaenge);
}
}
//Hier wird die Klasse point erstellt. (Koordinaten, Seriennummer, Anzahl)
class point{
int x_koordinate;
int y_koordinate;
static int point_seriennummer;
static int anzahl = 1;
//Konstruktor
point (){
System.out.println("Bitte geben Sie die x-Koordinate vom Punkt " +anzahl+ " an: ");
Scanner sc_x1 = new Scanner(System.in);
x_koordinate = sc_x1.nextInt();
System.out.println("Bitte geben Sie die y-Koordinate vom Punkt " +anzahl+ " an: ");
Scanner sc_y1 = new Scanner(System.in);
y_koordinate = sc_y1.nextInt();
anzahl++;
}
}
//Hier wird die Klasse line erstellt mit der Funktion der Längenberechnung.
class line{
point anfang;
point ende;
line (point anfang, point ende){
this.anfang = anfang;
this.ende = ende;
}
double getlaenge(){
double laenge = Math.pow(Math.pow(anfang.x_koordinate - ende.x_koordinate,2)
+ Math.pow(anfang.y_koordinate - ende.y_koordinate ,2),0.5);
return laenge;
}
}\n~~~
LG Risba
PS: Jeder kann meine Beispiele natürlich einfach nehmen wenn er will ;) Sollte wer einen Fehler finden, freue ich mich, wenn derjenige mir den Fehler mitteilt.
ebenfalls @andih: bei Beispiel 3 ist auch ein Fehler in der Berechnung. Der Vektor [AB] berechnet sich aus (b1-a1; b2-a2) etc.
Könnte jemand erklären, warum beim anoddviators ersten Beispiel ggT gleich null deklariert ist? Ich stehe irgendwie auf der Leitung... Danke schon mal!
int ggT =0;
for(int i=x; i>=1; i--){
if(x%i==0 && y%i==0){
ggT=i;
break;\n~~~
Hi, super für die Bsp. kannst du mir vielleicht erklären beim Bsp 5 ab //Konstruktor was da genau passiert ? Ich versuche den Vorgang zu verstehen, kanns aber nicht so ganz durchblicken:( Danke!!!
Florian @FloO19
Wirtschaftsingenieur... · Technische Universit...
Ich dachte in Java muss man immer die main-Methode (mit public static void main (String[] args) definieren? Wieso wurde die weggelassen und wieso kann man das? Bzw. mein NetBeans verlangt nach der main-Methode.