Programmideen für Anfänger



  • ich hab mir als ich angefangen habe auch mal ein kleines programm geschrieben, dass ordner durchsucht um bestimmte files zu archivieren. da kann man dann später auch noch schön ein GUI dazumachen.



  • #include "ic.hpp" ??
    was isn das?
    die datei ist im sdk set nicht dabei
    wo finde ich die?

    danke für:

    //Bildschirm löschen
    clrscr();
    //Cursor an oberste linke Position
    gotoxy(0,0);

    das kannte ich noch nicht, werde ich wohl einbaun
    wenn man den bildschirm gelöscht hat, ist der curser doch automatisch oben links oder nicht?



  • http://web56.hermes.server-pool.de/pages/ic.c-plusplus.net/

    wenn man den bildschirm gelöscht hat, ist der curser doch automatisch oben links oder nicht?

    kommt drauf an ob das bei der Improved Console so implementiert ist (Hab ich noch nicht getestet)



  • So wie es aussieht ist das nicht der Fall.
    Kannst du aber doch in der Methode console.clear(...) leicht implementieren.
    Setzt du da einfach ein

    setCurPos(0,0);
    

    mit rein. D.h. wenn Herr Sidewinder nichts dagegen hat. 😉



  • Der Code nutzt die Improved Console. Einfach mal im DOS/Win32 Konsolenforum gucken.



  • mikey schrieb:

    Der Code nutzt die Improved Console. Einfach mal im DOS/Win32 Konsolenforum gucken.

    ach. ^^

    Heute keine Brille auf ? 🕶



  • Also ich hab aus Langeweile mal einen mini Taschenrechner geschrieben der Lineare und Quadratische Funktionen berechnen konnte. Allerdings gingen nur die standard Formen und als Ergebnisse wurden nur die Nullstellen + Extrempunkte berechnet.

    Was ich dir aber empfehlen kann ist, einen "Formelrechner" zu schreiben. In den gibst du dann Funktionen wie "3+(2-1)-4+x" ein, und der rechnet dir dann das Ergebnis aus. Für x kam dann bei mir noch eine Abfrage welchen Wert diese Variable hätte. Ich musste das damals für einen Einstellungstest schreiben. Allerdings brauchte ich nur die Operatoren +-/ implementieren. Im Studium lernst du eventl. sogar noch eine richtig elegante Variante für das Problem. Ich glaub das war die Postfix Notation.

    Naja ich brauch nicht erwähnen das das von mir ne ganz schöne frickelei war. Aber es hat funktioniert und mir meine Ausbildung ermöglicht 😃



  • Das hatten doch die HP-Taschenrechner, oder?
    Damit waren die Leute viel schneller als mit normaler Infixnotation.



  • ist postfix die umgekehrt polnische notation?
    mein éhemaliger info-lehrer meinte mal, dass man damit parser eleganter und schneller machen kann.



  • Mr. Pink schrieb:

    ist postfix die umgekehrt polnische notation?
    mein éhemaliger info-lehrer meinte mal, dass man damit parser eleganter und schneller machen kann.

    jup, ist es und ja, hat er recht 😃 wenn nen term in UPN vorliegt, muss man ihn nur genau so, wie man ihn einliest, auf nen stack schreiben und jedesmal, wenn man auf nen operator trifft die jeweilige anzahl an operanden aus dem stack holen, mit dem operator verknüpfen und wieder reinstecken.

    überprüfung auf syntaktische korrektheit geschieht dabei ganz automatisch (wenn man kurz drüber nachdenkt, merkt man auch warum)



  • toll, was man so alles macht, wenn einem fad is ^^

    import java.util.Stack;
    import java.util.StringTokenizer;
    
    class UPN
    {
    	private static Stack<Double> stack = null;
    
    	public static Double parse(String upnTerm) {
    		stack = new Stack<Double>();
    
    		StringTokenizer st = new StringTokenizer(upnTerm, " ");
    		while(st.hasMoreTokens()) {
    			String atom = st.nextToken();
    			if(atom.equals("+")) {
    				Double rhs = stack.pop();
    				Double lhs = stack.pop();
    				stack.push(lhs + rhs);
    			}
    			else if(atom.equals("-")) {
    				Double rhs = stack.pop();
    				Double lhs = stack.pop();
    				stack.push(lhs - rhs);
    			}
    			else if(atom.equals("*")) {
    				Double rhs = stack.pop();
    				Double lhs = stack.pop();
    				stack.push(lhs * rhs);
    			}
    			else if(atom.equals("/")) {
    				Double rhs = stack.pop();
    				Double lhs = stack.pop();
    				stack.push(lhs / rhs);
    			}
    			else {
    				stack.push(Double.parseDouble(atom));
    			}
    		}
    
    		return stack.pop();
    	}
    }
    
    public class Testing
    {
    	public static void main(String args[]) {
    		System.out.println( UPN.parse("3 4 + 5 *") );
    	}
    }
    

    ein UPN parser in java. verdammt kurz oder? 😃 und man könnt den sogar noch kürzer machen, wenn man wollte.



  • "Java", "wollen".
    Hmm, irgendetwas stimmt da nicht.



  • Java ist schon relativ elegant, da ist was dran 🙂

    class UPN
    {
        public static Double parse(String upnTerm)
        {
        	Stack<Double> stack = new Stack<Double>();
            StringTokenizer st = new StringTokenizer(upnTerm, " ");
            while(st.hasMoreTokens())
            {
                String atom = st.nextToken();
                if(atom.equals("+"))
                    stack.push(stack.pop() + stack.pop());
                else if(atom.equals("-"))
                    stack.push( (-1)*(stack.pop()-stack.pop()));
                else if(atom.equals("*"))
                    stack.push( stack.pop()* stack.pop());
                else if(atom.equals("/"))
                	stack.push( 1 / (stack.pop() / stack.pop()) );
                else
                    stack.push(Double.parseDouble(atom));
            }
            return stack.pop();
        }
    }
    

    uff, hatteste Recht thordk 😮


Anmelden zum Antworten