carookee - group communication for you
Home / JavaForum / Java allgemein
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
2.648 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 1363 von 2212 (62%) |<   <   >   >|

Autor DeaconFrost
Datum 16.11.05, 10:25
Betreff Re: Bitte an die Experten:


Eigentlich wollte ich das ja nicht machen, aber sei's drum. Lass mich dann wenigstens wissen, welche Note Du dafür bekommen hast ;-)

Die Klassen zum Testen überlasse ich dir:
package hausuebung.wuerfel;

public class NSeitigerWuerfel {
    // Anzahl der Flaechen
    private int flaechen;
    
    // Konstruktor
    public void NSeitigerWuerfel(int flaechen) {
        this.flaechen = flaechen;
    }
    
    // den Wuerfel einmal werfen
    public int werfen(void) {
        return (int) ((Math.random() * flaechen) + 1);
    }
}


Die Klasse Bruch:
package hausuebung.Bruch;

public class Bruch {
    // Zaehler und Nenner des Bruchs
    private long zaehler;
    private long nenner;
    
    // erster Konstruktor => Wert 0
    public void Bruch(void) {
        Bruch(0L, 1L);
    }
    
    // zweiter Konstruktor => eine ganze Zahl
    public void Bruch(long zahl) {
        Bruch(zahl, 1L);
    }
    
    // dritter Konstruktor => Zähler und Nenner gegeben
    // Nenner darf nicht 0 sein => ArithmeticException
    public void Bruch(long zaehler, long nenner) {
        this.zaehler = zaehler;
        if (nenner == 0L)
        throw new ArithmeticException("ungültiger Bruch");
        else
        this.nenner = nenner;
    }
    
    // addieren von Bruechen
    public Bruch add(Bruch summand) {
        // gemeinsamen nenner ermitteln
        long gemeinsamerNenner = this.nenner * summand.nenner;
        
        // die jeweiligen zaehler entsprechend erweitern
        long summand1Zaehler = this.zaehler * summand.nenner;
        long summand2Zaehler = summand.zaehler * this.nenner;
        
        // neuen Bruch berechnen
        Bruch summe = new Bruch(summand1Zaehler + summand2Zaehler, gemeinsamerNenner);
        
        // kuerzen
        summe.kuerzen();
        
        // Rückgabe
        return summe;
    }
    
    // subtrahieren von Brüchen
    public Bruch subtract(Bruch subtrahend) {
        // einfach addieren wiederverwenden
        return add(new Bruch(-subtrahend.zaehler, subtrahend.nenner));
    }
    
    // multiplizieren von Brüchen
    public Bruch mulitiply(Bruch faktor) {
        Bruch produkt = new Bruch(this.zaehler * faktor.zaehler, this.nenner * faktor.nenner);
        
        // kürzen
        produkt.kuerzen();
        
        // Rückgabe
        return produkt;
    }
    
    // dividieren von Brüchen
    // zaehler des divisors darf nicht 0 sein, sonst wird ein ungültiger Bruch zurückgegeben => ArithmeticException
    public Bruch divide(Bruch divisor) {
        // divisor prüfen
        if (divisor.zaehler == 0L)
        throw new ArithmeticException("Division durch 0");
        
        // einfach mit dem Kehrwert multiplizeren
        return multiply(new Bruch(divisor.nenner, divisor.zaehler));
    }
    
    // Bruch kürzen
    public void kuerzen(void) {
        // alle möglichen teiler durchgehen
        // wichtig: vom größtmöglichen zum kleinsten
        for (long teiler = (nenner / 2); teiler > 1 ; --teiler) {
            // ermitteln, ob das ein teiler des zaehlers ist
            if (zaehler % teiler == 0) {
                // kürzen durchführen
                zaehler /= teiler;
                nenner /= teiler;
                
                // Bruch ist gekürzt => abbrechen
                break;
            }
        }
    }
}


[editiert: 16.11.05, 10:43 von ]


Diskussionsverlauf:
Bitte an die Experten:
    Re: Bitte an die Experten:
    Re: Bitte an die Experten:
    Re: Bitte an die Experten: o.T.

 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com