Taschenrechner

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Taschenrechner

    Hi
    Ich Programiere zurzeit an einem Taschenrechner (Schulprojekt), allerdings bin ich mit meinem Latein ein wehnig an Meine grenzen gekommen. Könntet ihr mir nicht ein Paar tips und vorschläge geben, ich komm einfach nicht weiter.

    1. 16-16=32 also macht er eine Addition anstatt einer subtraktion.
    2. Die Multiplikation führt er normal aus wen ich Den Operator * betätige, allerdings nicht wen ich Den Operator = betätige.
    3. Dividieren hatt den gleichen fehler wie Nummer 1



    PHP-Code:

    <?php

    $operand0 
    $_GET["operand0"];
    $operand1 $_GET["operand1"];
    $operator $_GET["operator"];

    switch (
    $operator)
    {
        case 
    "+":
        
    $operand0 $operand1 $operand0;
        
    $a "+";
        break;
        
        case 
    "-":
        
    $operand0 $operand1 $operand0;
        
    $a "-";
        break;
        
        case 
    "*":
        if (
    $operand0 == 0
        {
         
    $operand0 $operand1;
        }
        else
        {
          
    $operand0 $operand1 $operand0;
        }
      
    $a "*";
        break;
        
      case 
    "/":
        
        if (
    $operand0 == 0
        {
         
    $operand0 $operand1 $operand0;
        }
        else
        {
          
    $operand0 $operand0 $operand1;
        }
      
        
    $a "/";
      break;
            
        case 
    "C":
        
    $operand0 $operand1 0;
        break;
        
        case 
    "CE":
        
    $operand1 0;
        break;
        
                    case 
    "=":
                    switch (
    $a)
                        {
                            case 
    $a "+":
                            
    $operand1 $operand1 $operand0;
                
    $operand0 0;
                            break;
                            
                            case 
    $a "-":
                            
    $operand1 $operand0 $operand1;
                
    $operand0 0;
                            break;
        
                            case 
    $a "*":
                
    $operand1 $operand1 $operand0;
                
    $operand0 0;
                break;
        
                            case 
    $a "/":
                
    $operand1 $operand0 $operand1;
                
    $operand0 0;
                            break;
                        };
    }


    ?>

    <html>
    <body>
    <form action="Projekt_Taschenrechner.php" method="GET">
    <table>
        <tr>
            <td><input type="text" name="operand0" readonly value=<?echo "$operand0"?>></td>
        </tr>
        <tr>
            <td><input type="text" name="operand1" value=<?echo "$operand1"?>></td>
        </tr>
    </table>
    <table>
        <tr>
            <td><input type="submit" name="operator" value="+"\></td>
            <td><input type="submit" name="operator" value="-"\></td>
            <td><input type="submit" name="operator" value="*"\></td>
            <td><input type="submit" name="operator" value="/"\></td>
        </tr>
    </table>
    <table>
        <tr>
            <td><input type="submit" name="operator" value="C"\></td>
            <td><input type="submit" name="operator" value="CE"\></td>
            <td><input type="submit" name="operator" value="="\></td>
        </tr>
            
    </table>
    </form>
    </body>
    </html>
    Operand0 wird später ausgeblendet.
    ich darf kein Javascript benutzen.
    ich danke euch schoneinmal im voraus.
    Zuletzt geändert von Flex22; 26.06.2012, 18:04.

  • #2
    Was ist das Problem?

    Bitte lies unsere Regeln (siehe meine Signatur) und schalte insbesondere das Error-Reporting ein.

    Kommentar


    • #3
      das Problem ist das er auser bei der Addition (fast) nur Mist fabriziert.
      z.b.
      1. 16-16=32 also macht er eine Addition anstatt einer subtraktion.
      2. die Multiplikation führt er normal aus wen ich Den Operator * betätige allerdings nicht wen ich Den Operator = betätige.
      3. Dividieren hatt den gleichen fehler wie Nummer 1

      Ich weis ich weis der fehler sitzt vor dem Computer. Aber ich komm einfach nicht dahinter.
      Zuletzt geändert von Flex22; 26.06.2012, 18:04.

      Kommentar


      • #4
        Versuch mal gezielt zu debuggen.

        Wenn du merkst, dass er bei "Minus" eigentlich "Plus" rechnet, dann schau dir das gezielt an. Mach testausgaben und guck, ob er in die richtigen if-Zweige rein geht. So kannst du dem Fehler gezielt auf die schliche kommen.

        Deine Fälle sind sehr schlecht beschrieben. Poste mal bitte, welche Daten du in den jeweiligen Fällen gesendet hast.

        Kommentar


        • #5
          Ich sage es nur ungern, aber Dein Skript hat soviele Fehler, dass es schwer ist, Dir d e n Fehler zu zeigen. Sorry.

          Aber das Hauptproblem ist wohl, dass Du $a setzt und beim erneuten Aufruf des Skriptes auf $a zugreifst, obwohl es nicht mehr bekannt ist.

          Ich versuch's mal zu erklären:
          1. Der Benutzer gibt 20 ein und drückt den "-"-Button.
          2. Das Skript durchläuft den SWITCH-Zweig, erkennt das "-" und setzt $a auf "-".
          3. Das Formular wird erneut angezeigt. Der Benutzer gibt 5 ein und drückt den "="-Button.
          4. Das Skript durchläuft nun erneut den SWITCH-Zweig.

          Soweit an sich okay, doch jetzt gehst Du davon bei case "=" davon aus, dass $a noch bekannt ist und das ist nicht der Fall, denn durch das erneute Absenden des Forms "verlierst" Du alle Variablen bzw. deren Inhalt.

          Ich möchte Dir nun nicht die komplette Lösung geben, deshalb empfehle ich Dir, das Thema Sessions durchzulesen: [COLOR=#0066cc]http://de3.php.net/manual/de/book.session.php[/COLOR]

          Ausserdem empfehle ich Dir, in Deiner php.ini

          error_reporting = E_ALL

          zu setzen. Dadurch werden Dir Fehler (bspw. nicht bekannte Variablen wie Dein $a) sofort angezeigt und Du kannst darauf reagieren.

          Und ein Wort zum Schluß: Es ist zwar kein Muss, aber ich würde die Variablen per POST übermittelt und nicht mit GET.

          cya

          Kommentar


          • #6
            Vielen dank... Wow da habe ich garnicht drann gedacht... ne Lösung wollte ich ja nicht dan machts kein spaß mehr... die übergabe mit Post war schon geplant XD danke nochmal

            Kommentar


            • #7
              Den Code ein bisschen zu strukturieren und zu kommentieren hilft Dir auch, Fehler zu finden

              Hier:
              PHP Programmierung Richtlinien | Buxaprojects
              oder hier sind auch noch Hinweise zum stylen/kommentieren von Code:
              www.lehrling.biefer.com

              Gruss
              [COLOR=orangered]Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil![/COLOR]

              cubetech in Bern » Webdesign, Infrastruktur, Social Media, VoIP

              Kommentar


              • #8
                Cool Danke, dan mach ich mich gleich mal ran

                Kommentar

                Lädt...
                X