drpingoo
Erfahrenes Mitglied
Hi zusammen,
Versuch mich wieder mal am programmieren.
Also bei der Linksklammerdarstellung, ich weiss nich, ob euch das was sagt, ist quasi ein Baum impliziert. Also man durchläuft in jeweils von links nach rechts. Das heisst, immer, wenn eine neue Klammer geöffnet wird, bedeutet das, dass wir uns wieder eine Ebene tiefer befinden, wenn sie geschlossen wird wieder weiter oben, also einfach ungekehrt. Und durch Kommas abgetrennte Buchstaben bedeuten, dass sie sich auf der selben Ebene befinden.
Also z.B. so A(B(C,D))
Ich muss jetzt ein Programm schreiben, dass anzeigt, ob eine Eingabe in der Konsole korrekt war oder nicht und dementsprechend reagieren.
Ich möchte,dass tree[i] jeweils die Position im Baum markiert. Wie kann ich es aber anstellen, dass z.b. bei binärbaum(tree[i]) der tree[i] auch in der Titelmethode steckt, obwohl ich es schon deklariert habe zu Beginn. Und wie kann ich einen error bzw. ein ok ausprinten. Ist das Programm sonst ok?
lg
Versuch mich wieder mal am programmieren.
Also bei der Linksklammerdarstellung, ich weiss nich, ob euch das was sagt, ist quasi ein Baum impliziert. Also man durchläuft in jeweils von links nach rechts. Das heisst, immer, wenn eine neue Klammer geöffnet wird, bedeutet das, dass wir uns wieder eine Ebene tiefer befinden, wenn sie geschlossen wird wieder weiter oben, also einfach ungekehrt. Und durch Kommas abgetrennte Buchstaben bedeuten, dass sie sich auf der selben Ebene befinden.
Also z.B. so A(B(C,D))
Ich muss jetzt ein Programm schreiben, dass anzeigt, ob eine Eingabe in der Konsole korrekt war oder nicht und dementsprechend reagieren.
Ich möchte,dass tree[i] jeweils die Position im Baum markiert. Wie kann ich es aber anstellen, dass z.b. bei binärbaum(tree[i]) der tree[i] auch in der Titelmethode steckt, obwohl ich es schon deklariert habe zu Beginn. Und wie kann ich einen error bzw. ein ok ausprinten. Ist das Programm sonst ok?
lg
PHP:
/**
* Informatik II - FS2008 <br>
* Uebungsserie 3, Aufgabe 4 <br>
* Template for LKD.java <br>
*
* LKD verifies the syntactical correctness of a binary tree given
* in left-parenthesis representation <br>
*
* @author Silvia Santini
*/
public class LKD {
//the private class field tree contains the
//left-parenthesis representation of a binary tree
private char tree[];
int i;
/**
* Constructor initializes the class field tree.
*
* @param tree binary tree in left-parenthesis representation
*/
public LKD(char[] treeInLKDForm) {
tree = treeInLKDForm;
}
/**
* Prints an array of chars and marks the last element with "^"
* (You can use this method to indicate the element actually causing a syntax error)
*
* @param testIndex the index of the last correct element in the tree
*/
public void invalidPosition( int testIndex ) {
System.out.println( tree );
for(int j=0; j < testIndex; j++ ) {
System.out.print(" ");
}
System.out.println("^");
}
/**
* Verifies the syntactical correctness of the left-parenthesis
* representation of a binary tree
*/
public void syntaxChecker(tree[i]) {
int testIndex = 0;
tree[i] =binärbaumOderLeer(tree[i])
if(tree[i]!=' '){
return; // error
}
else{
return; //ok
}
if( testIndex == tree.length ) {
//correct left-parenthesis representation
System.out.println("Valid left-parenthesis representation :-) ");
}
else {
System.out.println( "ERROR: "+
"Error type 007 detected: ");
invalidPosition( testIndex );
}
}
int knoten(int pos){
if (tree[i] >= 'A' && tree[i] <= 'Z'){
return tree[i+1];}
else{
return ;//error
}
}
int binärbaum(tree[i]){ //ich möchte, dass der Paramter jeweils auch da drin steht,
tree[i] = knoten(tree[i]);//wie stelle ich das an?
if(tree[i]=='('){
tree[i] =tree[i+1] ;
tree[i] = binärbaum(tree[i]);
if(tree[i]==','){
tree[i] =tree[i+1];
tree[i] = binärbaum(tree[i]);
}
if(tree[i]!=')')
tree[i] =tree[i+1];
}
return tree[i];
}
int binärbaumOderLeer(tree[i]){
if (tree[i]==' ')return tree[i];
else return binärbaum(tree[i]);
}
public static void main(String[] args) {
//Parse the input
if( args.length != 1 ) {
System.out.println( "Invalid input!");
System.out.println( "Example of a correct call to LKD.java: " +
"java LKD \"A(B(C,B(A)))\"" );
System.exit( 1 );
}
//Convert input string to an array of chars (char[]):
char[] inputLKD = args[0].toCharArray();
//New instance of the LKD class initialized with the
//left-parenthesis representation given as input
LKD check = new LKD(inputLKD);
//Syntax-checker:
check.syntaxChecker();
}
}