iphpbb - Forenarchiv: Archivbeitrag des Forums A-Welt Forum
Verfügbare Informationen zu "Hausaufgaben"

  • Qualität des Beitrags:
  • Beteiligte Poster: Belafarinrod - alexander
  • Forum: A-Welt Forum
  • Forenbeschreibung: Das geile Forum
  • aus dem Unterforum: Java-Forum
  • Antworten: 3
  • Forum gestartet am: Freitag 04.03.2005
  • Sprache: deutsch
  • Link zum Originaltopic: Hausaufgaben
  • Letzte Antwort: vor 2 Jahren, 10 Monaten, 15 Tagen, 22 Stunden, 16 Minuten
Alle Beiträge und Antworten
Belafarinrod - 19.02.2006, 13:21
Hausaufgaben
Hi,

so ich habe leider mal wieder nicht die kleinste Ahnung wie ich die Klasse liesFaktor und liesProdukt schreiben soll. Bitte also wieder um Hilfe.


MFG Belafarinrod
alexander - 19.02.2006, 14:00

ich hab zwar nicht überprüft, aber es könnte so aussehen:

Code: // Autor: Alex
// Datum: 19.02.2006

public class AusdruckBaum {

  private String eingabe;
  private int pos, laenge;
  private char aktZeichen;
  private final static char ENDE ='\u0000';

  public AusdruckBaum (String str) {
    neueEingabe(str);
  }

  public void neueEingabe(String str) {
    eingabe = str; pos = 0; laenge = str.length();
    naechstesZeichen();
  }

  private void naechstesZeichen() {
    if (pos<laenge) {
      aktZeichen = eingabe.charAt(pos); pos++;
    } else aktZeichen = ENDE;
  }

  public BinTree liesAusdruck() {
    BinTree x, operand;
    char operator;
    x = liesProdukt();
    while (aktZeichen=='+' || aktZeichen=='-') {
      operator = aktZeichen;
      naechstesZeichen();
      operand = liesProdukt();
      x = new BinTree(x, new Character(operator), operand);
    }
    return x;
  }
 
  private BinTree liesProdukt(){
    BinTree x, operand;
    char operator;
    x = liesFaktor();
    while(aktZeichen=='*' || aktZeichen=='/'){
      operator = aktZeichen;
      naechstesZeichen();
      operand = liesFaktor();
      x = new BinTree(x, new Character(operator), operand);
    }
    return x;
  }
 
  private BinTree liesFaktor(){
    BinTree x;
    if(aktZeichen=='('){
      naechstesZeichen();
      x = liesAusdruck();
      naechstesZeichen();
     
      if(aktZeichen==')'){
        x = new BinTree(x, new Character(aktZeichen), liesAusdruck());
      }
    }else{
      x = new BinTree(new Character(aktZeichen));
      naechstesZeichen();
    }
    return x;
  }
}
alexander - 21.02.2006, 19:43

Hab den Ausdrucksbaum berichtigt! Und so könnte der AusdrucksbaumTest aussehen:

Code: // Autor: Alex
// Datum: 21.02.2006

public class AusdruckBaumTest {
  static void prefix(BinTree b){
    if(!b.empty()){
      System.out.print( ((Character)b.value()).toString()+" " );
      prefix(b.left());
      prefix(b.right());
    }
  }
 
  static void infix(BinTree b){
    if(!b.empty()){
      infix(b.left());
      System.out.print( ((Character)b.value()).toString()+" " );
      infix(b.right());
    }
  }
 
  static void postfix(BinTree b){
    if(!b.empty()){
      postfix(b.left());
      postfix(b.right());
      System.out.print( ((Character)b.value()).toString()+" " );
    }
  }
 
  public static void main(String[] args) {
    AusdruckBaum ab;
    BinTree b;
   
    ab = new AusdruckBaum("A+B*C");
    b = ab.liesAusdruck();
    prefix(b); System.out.println("");
    infix(b);  System.out.println("");
    postfix(b);
   
//    System.out.println("");
//    ab.neueEingabe("(A+B)*C");
//    b = ab.liesAusdruck();
//    prefix(b);
//   
//    System.out.println("");
//    ab.neueEingabe("(A+B)*(C+D)");
//    b = ab.liesAusdruck();
//    prefix(b);
//   
//    System.out.println("");
//    ab.neueEingabe("(A+B+B+D)*2");
//    b = ab.liesAusdruck();
//    prefix(b);
  }
}
Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken
Weitere Beiträge aus diesem Forum
Ähnliche Beiträge
Hausaufgaben - Andy (Dienstag 28.11.2006)
Hausaufgaben die wir aufbekommen habe ! - michael (Montag 06.11.2006)
Hausaufgaben vom 26. September 2006 - Shazam (Dienstag 26.09.2006)
Hausaufgaben - Knöpfl3 (Samstag 07.04.2007)
Hausaufgaben vom 22.11 zum 29.11. - War of Genesis (Montag 28.11.2005)