tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
2037
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    He-man 123 He-man 123 ist offline Grünschnabel
    Registriert seit
    Mar 2011
    Beiträge
    3
    Hallo zusammen,

    ich bin gerade dabei einen Taschenrechner zu programmieren. Dieser funktioniert soweit auch.
    Mein Problem ist , dass bei der Eingabe keine Sonderzeichen akzeptiert werden sollen. Also nur die Eingabe von Zahlen , sowie "+"und "-" zulässig sein sollen. Bei beispielsweise Buchstaben und Sonderzeichen soll eine Fehlerausgabe und der Programmabbruch erfolgen.
    Kann mir da jemand weiterhelfen?

    Vielen Dank Schonmal!

    Hier mein mal bisheriges Skript :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    
     
    Write-Host "Geben Sie zwei Zahlen ein" -ForegroundColor Red
    Write-Host "Wählen Sie eine der vier möglichen Rechenoperationen aus:" -ForegroundColor Green
    Write-Host "1: Zahl1 : Zahl2 = Ergebnis"
    Write-Host "2: Zahl1 + Zahl2 = Ergebnis"
    Write-Host "3: Zahl1 - Zahl2 = Ergebnis"
    Write-Host "4: Zahl1 * Zahl2 = Ergebnis"
     
     
    $Zahl1 = Read-Host "Bitte geben Sie die erste Zahl ein" 
    $Zahl2 = Read-Host "Bitte geben Sie die zweite Zahl ein"
    [int]$Eingabe = Read-Host "Wählen Sie eine Rechenoperation"
    $Zahl1 = $Zahl1.Replace(",",".")
    $Zahl2 = $Zahl2.Replace(",",".")
    $Zahl1 = [double] $Zahl1
    $Zahl2 = [double] $Zahl2
     
     
     
    #Zulässige Rechenoperationen definiert  
     
        switch ($Eingabe) {
    1 {$Ergebnis = $Zahl1 / $Zahl2}
    2 {$Ergebnis = $Zahl1 + $Zahl2}
    3 {$Ergebnis = $Zahl1 - $Zahl2}
    4 {$Ergebnis = $Zahl1 * $Zahl2}
    }
     
                
     
    #Fehlerausgabe bei Division durch 0 und Programmabbruch
     
    if(($Zahl2 -eq 0) -and ($Eingabe -eq 1)){
        
        $antwort = "Es darf nicht durch 0 geteilt werden";
        [System.Windows.Forms.MessageBox]::Show($antwort, "Ungültige Eingabe"); break 
            }
                
                
     
    #Eingabe Rechenoperation darf nicht kleiner 1 und größer 4 sein.
     
    if(($Eingabe -lt 1) -or ($Eingabe -gt 4) -or ($Eingabe -gt 10)){
        
        $antwort = "Die Eingabe liegt nicht im Wertebereich 1-4";
        [System.Windows.Forms.MessageBox]::Show($antwort, "Ungültige Eingabe"); break
        }
        
     
    #stimmt die Eingabe mit dem Muster überein, so erfolgt die Berechnung und Ausgabe des Ergebnisses   
     
    else{
     
        if($Eingabe -eq 1){
     
            $antwort = "           <" + $Zahl1 + "> : <" + $Zahl2 + ">   =   <" + $Ergebnis + ">           ";
            [System.Windows.Forms.MessageBox]::Show($antwort, "Ergebnis zu A durch B");
            }
        if($Eingabe -eq 2){
        
            $antwort = "           <" + $Zahl1 + "> + <" + $Zahl2 + ">   =   <" + $Ergebnis + ">           ";
            [System.Windows.Forms.MessageBox]::Show($antwort, "Ergebnis zu A plus B");
            } 
        if($Eingabe -eq 3){
     
            $antwort = "           <" + $Zahl1 + "> - <" + $Zahl2 + ">   =   <" + $Ergebnis + ">           ";
            [System.Windows.Forms.MessageBox]::Show($antwort, "Ergebnis zu A minus B");
            }
            
        if($Eingabe -eq 4){
        
            $antwort = "           <" + $Zahl1 + "> * <" + $Zahl2 + ">   =   <" + $Ergebnis + ">           ";
            [System.Windows.Forms.MessageBox]::Show($antwort, "Ergebnis zu A mal B");
            }
        
     
    }


    lg

    He-man 123
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Bsp:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    $a = 0
    $b = 0
    $op = 0
     
    if (![int]::TryParse($Eingabe, [ref]$op) -or $op -lt 1 -or $op -gt 4) {
      echo "Ungültige Eingabe."
      return 1
    }
     
    # $Zahl1 = $Zahl1.Replace(",",".") ist unnötig.
    if (![double]::TryParse($Zahl1,
          [System.Globalization.NumberStyles]::Float -bor [System.Globalization.NumberStyles]::AllowThousands,
          [System.Globalization.CultureInfo]::CurrentCulture::NumberFormat,
          [ref]$a) {
      echo "Keine gültige Zahl: $Zahl1"
      return 1
    }
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    He-man 123 He-man 123 ist offline Grünschnabel
    Registriert seit
    Mar 2011
    Beiträge
    3
    Hi ,
    danke für deine schnelle antwort.
    Da ich noch nicht so viel Ahnung habe , weiss ich nicht , wie ich das in meinen Code implementieren soll. Könntest du mir dabei vielleicht helfen oder näher das näher erklären?
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    
    Write-Host "Geben Sie zwei Zahlen ein" -ForegroundColor Red
    Write-Host "Wählen Sie eine der vier möglichen Rechenoperationen aus:" -ForegroundColor Green
    Write-Host "1: Zahl1 : Zahl2 = Ergebnis"
    Write-Host "2: Zahl1 + Zahl2 = Ergebnis"
    Write-Host "3: Zahl1 - Zahl2 = Ergebnis"
    Write-Host "4: Zahl1 * Zahl2 = Ergebnis"
     
    $a = 0
    $b = 0
    $op = 0
     
    $Zahl1 = Read-Host "Bitte geben Sie die erste Zahl ein"
    if (![double]::TryParse($Zahl1,
          [System.Globalization.NumberStyles]::Float -bor [System.Globalization.NumberStyles]::AllowThousands,
          [System.Globalization.CultureInfo]::CurrentCulture::NumberFormat,
          [ref]$a)) {
      echo "Keine gültige Zahl: $Zahl1"
      return 1
    }
     
    $Zahl2 = Read-Host "Bitte geben Sie die zweite Zahl ein"
    if (![double]::TryParse($Zahl2,
          [System.Globalization.NumberStyles]::Float -bor [System.Globalization.NumberStyles]::AllowThousands,
          [System.Globalization.CultureInfo]::CurrentCulture::NumberFormat,
          [ref]$b)) {
      echo "Keine gültige Zahl: $Zahl1"
      return 1
    }
     
    $Eingabe = Read-Host "Wählen Sie eine Rechenoperation"
    if (![int]::TryParse($Eingabe, [ref]$op) -or $op -lt 1 -or $op -gt 4) {
      echo "Ungültige Eingabe."
      return 1
    }
     
    # $Zahl1 = $Zahl1.Replace(",",".") ist unnötig.
     
    switch ($op) {
    1 {$Ergebnis = $a / $b}
    2 {$Ergebnis = $a + $b}
    3 {$Ergebnis = $a - $b}
    4 {$Ergebnis = $a * $b}
    }
     
    echo "Ergebnis: $Ergebnis"
    Ein/Ausgabe (deutsches System):
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Geben Sie zwei Zahlen ein
    Wählen Sie eine der vier möglichen Rechenoperationen aus:
    1: Zahl1 : Zahl2 = Ergebnis
    2: Zahl1 + Zahl2 = Ergebnis
    3: Zahl1 - Zahl2 = Ergebnis
    4: Zahl1 * Zahl2 = Ergebnis
    Bitte geben Sie die erste Zahl ein: 24.493,4942
    Bitte geben Sie die zweite Zahl ein: 494
    Wählen Sie eine Rechenoperation: 3
    Ergebnis: 23999.4942
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  5. #5
    He-man 123 He-man 123 ist offline Grünschnabel
    Registriert seit
    Mar 2011
    Beiträge
    3
    Vielen dank für deine Hilfe
    klapprt jetzt prima.

    lg
     

Ähnliche Themen

  1. [Powershell] Taschenrechner
    Von freakpc im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 2
    Letzter Beitrag: 25.02.11, 10:32
  2. [Powershell]
    Von rkrause im Forum Sonstige Sprachen
    Antworten: 2
    Letzter Beitrag: 25.09.10, 19:50
  3. Einfachen Taschenrechner programmieren
    Von Conny22 im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 12.05.10, 14:46
  4. Taschenrechner in Java Programmieren
    Von sixcross im Forum Java
    Antworten: 7
    Letzter Beitrag: 11.03.09, 20:37
  5. Taschenrechner programmieren in C++
    Von eriko im Forum C/C++
    Antworten: 5
    Letzter Beitrag: 17.08.07, 23:44