anfänger braucht hilfe bei Formelumwandlung infix/postfix

Diskutiere anfänger braucht hilfe bei Formelumwandlung infix/postfix im C/C++ Forum im Bereich Programmieren unter Linux/Unix; Hallo, ich sitz nun schon seit einigen Tagen an einer Programmierenaufgabe. Es soll ein Infix-Ausdruck in einen üpostfic-ausdruck umgewandelt...

  1. #1 raven1276, 31.10.2005
    raven1276

    raven1276 Guest

    Hallo,

    ich sitz nun schon seit einigen Tagen an einer Programmierenaufgabe. Es soll ein Infix-Ausdruck in einen üpostfic-ausdruck umgewandelt werden. Ich dachte, ich hätts verstanden, aber mein Programm macht jede Menge murks. Die Klammern z.B. werden ausgegeben, obwohl sie ja gelöscht werden sollten. Es wäre echt klasse, wenn sich jemand mal den Quellcode ansehen würde und mir sagen könnte, was ich alles flasch gemacht habe. Ich blicke da nicht mehr durch. Achja, wir sollten gets nehmen. Vielen Dank schonmal im vorraus.

    Code:
    #include <stdio.h>
    char input[100];
    char output[100];
    char help[100];
    int input_index=0;
    int help_index=0;
    int output_index=0;
    int input_prio;
    int help_prio;
    
    
    void push(char a){
       help[help_index]=a;
       help_index++;
    }
    
    
    char pop(){
    help_index--;   
       return help[help_index];
    }
    
    
    int priority(char a){
       int prio;
       switch(a){
          case '+':prio=1;
          break;
       
          case '-':prio=1;
          break;
       
          case '*':prio=2;
          break;
       
          case '/':prio=2;
          break;
       
          case '(':prio=3;
          break;
       
          case ')':prio=4;
          break;
       
          default:prio=0;
          break;
          }
    return prio;
    }
    
       
    void umformung(){
    //   input_prio=priority(input[input_index]);
    //   if(input_prio==0){
    //      
    //      output[output_index]=input[input_index];
    //      output_index++;
    //      input_index++;
    //      }
    //   else{
    //      push(input[input_index]);
    //      input_index++;
    //      }
       while (input[input_index] !='\0')
       {
          if(help[help_index]=='#'){
             input_prio=priority(input[input_index]);
             if(input_prio==0){
                output[output_index]=input[input_index];
                output_index++;
                input_index++;
                }
             else{
                push(input[input_index]);
                input_index++;
                }
          }
             else{
             input_prio=priority(input[input_index]);
             help_prio=priority(help[help_index]);
             if(input_prio==4){
                while(help[help_index] !='#'){
                   output[output_index]=pop();
                   output_index++;
                   }
                }
             else{
                if(input_prio==3){
                   push(input[input_index]);
                   input_index++;
                   }
                else{
                   if(input_prio==0){
                      output[output_index]=input[input_index];
                      output_index++;
                      input_index++;
                      }
                   else{
                      if(input_prio>help_prio){
                         push(input[input_index]);
                         input_index++;
                         }
                      else{
                         output[output_index]=pop();
                         output_index++;
                         }
                      }
                   }
                }
             }
          }
       while(help[help_index] !='#'){
          if(help[help_index] !='#'){   
          output[output_index]=pop();
          output_index++;
          }
          }
       }
       
    
    
    
    
    
    main(){
          
       printf("\n\nDieses Programm formt Ausdrücke von der Infix in die Postfix-Notation um.\n");
       printf("Es können nur Konstanten,Variablen und Zahlen mit einer Stelle verwendet werden.\n");
       printf("Erlaubte Operatoren sind: '+''-''*''/''('')'\n");
       printf("Bitte geben sie den Ausdruck, der umgeformt werden soll ein:");
       
       gets (input);
       push('#');
       umformung();
       printf("umgeformte Gleichung: %s\n",output);
    
       } 
    gruß Robert
     
  2. Anzeige

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. oenone

    oenone Freier Programmierer[Mod]

    Dabei seit:
    22.08.2002
    Beiträge:
    599
    Zustimmungen:
    0
    Ort:
    Mannheim
    hast du dir denn vorher überlegt, was das programm machen soll?
    also z.b. struktogramm oder pap oder ähnliches...

    wenn ja, zeig das mal - eventuell hast du einen logischen denkfehler drin. ansonsten könnte auch bei der implementierung was schief gleaufen sein - auch das können mehr augen besser erkennen ;)

    wenn nein, lösch den ganzen code und fang damit neu an. der größte teil der zeit sollte für die planung draufgehen.

    auf bald
    oenone
     
Thema:

anfänger braucht hilfe bei Formelumwandlung infix/postfix

Die Seite wird geladen...

anfänger braucht hilfe bei Formelumwandlung infix/postfix - Ähnliche Themen

  1. Script anfänger...braucht ein paar Tipps

    Script anfänger...braucht ein paar Tipps: Hallo, ich bin Script anfänger und versuche ein script zu schreiben, dass mir in einem Verzeichnis alle desktop.ini sucht und dann...
  2. Bloody anfänger braucht starthilfe :-)

    Bloody anfänger braucht starthilfe :-): Hallo, habe mir einen gebrauchten Laptop zugelegt um mich endlich mal an Linux zu wagen und damit zu experimentieren. Leider fehlt mir der...
  3. openSUSE 10.2 Anfänger braucht Hilfe

    openSUSE 10.2 Anfänger braucht Hilfe: Hallo, möchte mich das erste mal mit Linux auseinandersetzen und habe openSUSE 10.2 (DVD-Version) gezogen und auf eine DVD-RW mit NERO 7...
  4. Opensuse 10.2 Anfänger braucht Hilfe!

    Opensuse 10.2 Anfänger braucht Hilfe!: Hallo! Ich habe heute Opensuse 10.2 auf einer nagelneuen Festplatte installiert. Die Installation habe ich, ohne eigene Konfigurationen...
  5. Anfänger braucht Hilfe

    Anfänger braucht Hilfe: Also ich hab da zwei probleme. Ich benutze Knoppix und win Xp,und will mich langsam auf linux umstellen. jetzt meine fragen: 1. beim booten...
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden