Advertisement
gewur33

Untitled

Nov 19th, 2014
427
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.96 KB | None | 0 0
  1.  
  2. String input = "+1-2*3";
  3.  
  4. # zersch mol da input splitten:
  5.  
  6. # alle operatoren in a array
  7. String operatorArray[];
  8.  
  9. # alle ints in a array
  10. Integer integerArray[];
  11.  
  12. #arrays befüllencod - durch den input durchloopen
  13.  
  14. # eine laufvariable, damit wir wissenwo in den arrays wir einfüllen müssen
  15. # da es genau gleichviele Integer wie Operatoren im ausdruck sind, reicht eine solche laufvariable howManyInts
  16.  
  17. Integer howManyInts = -1; #wenn wir bei 0 anfangen, dann ist der erste int auf integerArray[1], er soltle aber auf integerArray[0] sein^
  18.  
  19. for (int x = 0; x < input.length(); x++) {
  20.     # wenn die aktuelle position eine Zahl ist
  21.     if (input[x].isInteger()) {
  22.         howmanyInts++;      #um 1 erhöhen
  23.         integerArray[howmanyInts] = input[x];
  24.     }
  25.     # wenn aktuele position ein operator
  26.     # ACHTUNG, erster operator kann vergessen werden!, bzw kann nur + oder - sein und wir gehen mal davon aus, das + und - schon im Typen integer definiert sind
  27.     # was auch der Realität entspricht: in java und c ist es legal sowas zu machen: Integer x = -20;
  28.     # wir nehmen einfach vom fertigen OpArray den ersten wert weg und machen ein neues - erscheint mir die billigste lösung ( nicht die beste.. )
  29.     if (input[x].IsOperator()) {
  30.         Integer howManyOps = -1;
  31.         operatorArray[howManyInts] = input[x];
  32.     }
  33. }
  34.  
  35. # erster wert vom operatorArray[] wegnehmen:
  36. operatorArray[0].remove();      #kA ob ihr das im pseudocode dürft^^ :)
  37.  
  38. # jetzt gibts zwei arrays mit operatoren und mit zahlen
  39. # nun muss durch diese richtig durchiteriert werden - das ist etwas tricky...
  40.  
  41. Integer Ergebnis = 0;
  42.  
  43. for (x = 0; x < integerArray[].length(); x++) {
  44.     for(i = 0; i <operatorArray[].length(); i++) {
  45.         # je nachdem, was für ein operator
  46.         String operator = operatorArray[i];
  47.         switch (operator) {
  48.             case '+':
  49.                 Ergebnis = Ergebnis + integerArray[x]+integerArray[x+1];
  50.             case '-':
  51.                 Ergebnis = Ergebnis + integerArray[x]-integerArray[x+1];
  52.             case '*':
  53.                 .........
  54.         }
  55.     }  
  56. }
  57.  
  58. return Ergebnis;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement