Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Taschenrechner, mit negativen Zahlen rechnen

Einklappen

Neue Werbung 2019

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

  • PHP Taschenrechner, mit negativen Zahlen rechnen

    Hallo Forum

    Ich bin gerade an einem PHP-Projekt dran. Der Taschenrechner funktioniert eigentlich einwandfrei bis auf etwas. Ich kann keine negativen Zahlen miteinander operieren. Das einzige was funktioniert ist +, das heisst: -9+10=1. Wenn ich negative Zahlen versuche auszurechnen kommt das hierbei raus: -9*8= -9 . Ich würde mich über schnelle antworten freuen lg enis22 Hier ist noch mein Code:

    <?php
    if (!empty($_POST["eingabe"])){
    $eingabe = $_POST["eingabe"];

    if(strlen(strpos($eingabe,"+"))>0){
    $vorzeichen = "+";
    }elseif(strlen(strpos($eingabe,"-"))>0){
    $vorzeichen = "-";
    }elseif(strlen(strpos($eingabe,"*"))>0){
    $vorzeichen = "*";
    }elseif(strlen(strpos($eingabe,"/"))>0){
    $vorzeichen = "/";
    }

    $zahl1 = substr($eingabe,0,strpos($eingabe,$vorzeichen));
    $zahl2 = substr($eingabe,1+strpos($eingabe,$vorzeichen));
    $error = False;

    switch ($vorzeichen) {
    case "+":
    $ergebnis = $zahl1 + $zahl2;
    break;
    case "-":
    $ergebnis = $zahl1 - $zahl2;
    break;
    case "*":
    $ergebnis = $zahl1 * $zahl2;
    break;
    case "/":

    if ($zahl2 == 0){

    $error = True;
    }else{
    $ergebnis = $zahl1 / $zahl2;
    }

    break;

    }
    if (!$error ){
    echo $zahl1 . $vorzeichen . $zahl2 . "=" . $ergebnis;
    }else{
    echo "ERROR";
    }
    }

    //echo $_POST("eingabe");
    ?>

  • #2
    Bitte hier im Forum Code-Tags verwenden.

    Was hast du selbst schon versucht herauszufinden? http://php-de.github.io/jumpto/leitf...ngssituation-3
    zB lass dir vor deinem switch zahl1, zahl2 und vorzeichen ausgeben und schau ob das erwartete darin enthalten ist.

    LG
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      So was
      PHP-Code:
      strlen(strpos($eingabe,"+")) 
      ist schonmal unsinnig.

      Kommentar


      • #4
        Es reicht wenn du das strlen weglässt. Das solltest du aber nur machen wenn du verstehst was das Problem ist und warum das eine mögliche Lösung ist!

        Kommentar


        • #5
          Hallo jspit

          Könntest du mir bei meinem Problem helfen. Habe hausl's Ratschlag versucht aber klappt nicht. Vielleicht liegt es daran dass ich das minus/mal/geteilt durch je nachdem 2 mal brauche : if(strlen(strpos($eingabe,"+"))>0){
          $vorzeichen = "+";
          }elseif(strlen(strpos($eingabe,"-"))>0){
          $vorzeichen = "-";
          }elseif(strlen(strpos($eingabe,"*"))>0){
          $vorzeichen = "*";
          }elseif(strlen(strpos($eingabe,"/"))>0){
          $vorzeichen = "/";
          }

          LG

          Kommentar


          • #6
            Zitat von hausl Beitrag anzeigen
            Bitte hier im Forum Code-Tags verwenden.
            !!

            Zitat von erc
            Es reicht wenn du das strlen weglässt. Das solltest du aber nur machen wenn du verstehst was das Problem ist
            PHP-Code:
            $eingabe "foo*bar";
            echo 
            strpos($eingabe,"*"); // 3: Position des * im String (bei 0 beginnend!)
            echo strlen(strpos($eingabe,"*")); // 1: (Länge von "3" => 1) 
            LG
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Ich verstehe:
              Du bekommst das falsche Ergebnis heraus, wenn du mit negativen Zahlen multiplizierst.
              Vorschlag:
              PHP-Code:
              Mein-MacBook-Air:~ usernamephp -a
              Interactive shell

              php 
              > echo (int)strip_tags(-9) * (int)strip_tags(8);
              -
              72 
              Gesamtes Beispieltaschenrechnerscript findest du hier:

              Kommentar


              • #8
                Zitat von dreamcatcher Beitrag anzeigen
                Ich verstehe:

                Vorschlag:
                PHP-Code:
                Mein-MacBook-Air:~ usernamephp -// gz?

                Interactive shell 

                php 
                > echo (int)strip_tags(-9) * (int)strip_tags(8);
                -
                72 
                Würde funktionieren, wenn er die Operanden und Operator getrennt eingeben würde, aber so wies aussieht wird alles über ein Eingabefeld übertragen. Von daher ist er noch gar nicht so weit, sondern muss die Rechnung erst noch in seine Bestandteile auseinandernehmen. + why not float

                nvm den ersten Teil, er hats ja schon auseinander.
                [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                Kommentar


                • #9
                  Er könnte ja auch gleich var_dump() verwenden (wobei das für den GET/POST-Empfang von String-Daten vermtulich nicht fuktioniert... ungetestet).

                  PHP-Code:
                  var_dump(-9*8); // int(-72) 
                  http://www.php.de/php-einsteiger/102...tml#post751249

                  LG
                  The string "()()" is not palindrom but the String "())(" is.

                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Hallo hausl

                    Wie verwende ich Code-Tags. Kenne mich noch nicht so aus :/
                    LG

                    Kommentar


                    • #11
                      Hallo vph

                      Ja es wird alles über ein Eingabefeld übertragen. Ich soll nicht nur die Rechung :-9 * 8 ausrechnen können sondern auch andere (also nicht speziell nur diese Rechnung) LG

                      Kommentar


                      • #12
                        Das ist ein blauer Button über dem Textfeld wo "php" drauf steht und wenn du den klickst kommt sowas -> [ PHP ] hier gehört der Code hin [ /PHP ] (ohne Leerzeichen)
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          Hallo vph

                          Ja wird alles über Eingabefeld übertragen. Ich soll nicht nur die Rechung -9 *8 ausrechnen können sondern auch andere zahlen die negativ sind(also nicht nur speziell diese, war nur ein Beispiel). Wo füge ich den von dir geschriebenen Code ein?

                          LG enis22

                          Kommentar


                          • #14
                            PHP-Code:
                            if (!empty($_POST["eingabe"])){
                                    
                            $eingabe $_POST["eingabe"];
                                    
                                    if(
                            strlen(strpos($eingabe,"+"))>0){
                                        
                            $vorzeichen "+";
                                    }elseif(
                            strlen(strpos($eingabe,"-"))>0){
                                        
                            $vorzeichen "-";
                                    }elseif(
                            strlen(strpos($eingabe,"*"))>0){
                                        
                            $vorzeichen "*";
                                    }elseif(
                            strlen(strpos($eingabe,"/"))>0){
                                        
                            $vorzeichen "/";
                                    } 

                            Kommentar


                            • #15
                              das "eingabe" ist hier das Textfeld vo die Zahlen (Ziffern) eingetragen werden

                              Kommentar

                              Lädt...
                              X