Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Taschenrechner mit zwei Menü´s zur Auswahl

Ich bräuchte etwas Hilfe bzw. kleinen Rat.Ich soll hier einen Taschenrechner programmieren der zum ersten alle Grundrechenarten (+-*/) beinhalten soll und in einem Menü Ausgewählt und Angezeigt werden soll, zum zweiten soll ich ein zusätzliches Menü mit Auswahl ob ganzzahlige Operanden oder reelle Operanden einbauen.Unter dem Zweig reelle Operanden soll dann die Berechnung der vier Winkelfunktionen mit eingabe von Grad- und Bogenmaß ermöglicht werden.

Mein Problem ist jetzt das ich nicht weiss wie ich das genau realisieren soll.Ich habe da erstmal alle Zahlen etc. delariert dann ein Do While eingebaut wo dann alles statt findet und dann folgen vier Switch Anweisungen.Vor der ersten Switch soll angegeben werden ob ganzzahlige oder reelle dann kommt eine switch die inkraft treten sollte wenn jetzt (g)für ganzzahlige gewählt wird.Dann folgt die zweite switch wo dann die berechnung der ganzzahligen durchgeführt wird.
Dann kommt wieder eine Switch wo das ganze dann ähnlich aufgebaut ist nur eben dann (r) für reelle.Da ist mein Problem.(r) kann ich beliebig eingeben und es passiefrt gar nichts. Bei (g) funzt es einwandfrei.Wie kann ich das hinbekommen das auch (r) angezeigt werden kann? Ich hoffe ich habe mein Problem gut geschildert und hoffe auf antwort.Ich habe meine mein adyy mit angegeben da ich glaube es ist nicht mit ein paar worten getan.

vielen Dank im vorraus   grüsse tobias


Antworten zu Taschenrechner mit zwei Menü´s zur Auswahl:

Gibt es einen Grund dafuer, dass Du weder Sourcecode postest, noch sagst, welche Programmiersprache Du ueberhaupt verwendest?

Ups ja das müsste man angeben.Ich verwende C++
und der Sourcecode vieleicht das hier?

#include <stdio.h>

 int main()
 {
   int zahl1;
   int zahl2;
   int zahl3;
   int rest1;
   int bogenmass1;
   char auswahl;
   char auswahl2;
   char auswahl3;
   printf("\nMinitaschenrecher\n");
   printf("-----------------\n\n");
   do
   {
     printf("\nZahl (1)ganzahlige Operanden (2)reelle Operanden?");
     printf("\nFuer beenden wählen Sie (b)");
     scanf("%s",&auswahl);
     switch(auswahl)
     {

       case('1'):
     printf("\nBitte geben Sie die erste Zahl ein: ");
     scanf("%i", &zahl1);
     printf("Bitte geben Sie die zweite Zahl ein: ");
     scanf("%i", &zahl2);
     printf("\nZahl (+)addieren, (-)subtrahieren, (/) dividieren oder (*)multiplizieren?");
     printf("\nFuer beenden wählen Sie (b)");
     scanf("%s",&auswahl2);
       switch(auswahl2)
       {
       case('+'):
       zahl3=zahl1+zahl2;
         printf("Ergebnis: %i", zahl1 + zahl2);
       break;

       case('-'):
       zahl3=zahl1-zahl2;
         printf("Ergebnis: %i", zahl1 - zahl2);
       break;

       case('/'):
       zahl3=zahl1/zahl2;
          if(zahl2 == 0)
           printf("Division durch 0 nicht möglich!");
       else
          rest1=zahl1%zahl2;
          printf("Ergebnis: %i", zahl1 / zahl2);
            printf("\nRest ist %i",rest1);
       break;

       case('*'):
       zahl3=zahl1*zahl2;
         printf("Ergebnis: %i", zahl1 * zahl2);
       break;
       case('E'):
       case('e'):
       break;
       default:
         printf("Fehler: Diese Eingabe ist nicht möglich!");
       break;}
       switch( auswahl )
       {
             case ('2') :
                 break;
            printf("\nBitte geben Sie die erste Zahl ein: ");
        scanf("%i", &zahl1);
        printf("Bitte geben Sie die zweite Zahl ein: ");
        scanf("%i", &zahl2);
        printf("\nZahl (k)kotangens, (t)tangens, (c)cosinus oder (s)sinus?");
        printf("\nFuer beenden wählen Sie (b)");
        scanf("%s",&auswahl3);
        switch( auswahl3 )
        {
        case ('k') :
            zahl3=zahl1/zahl2;
            rest1=zahl1/zahl2;
            bogenmass1=3.142/zahl3;
            printf("\n Ergebnis: %i °", zahl1 / zahl2);
            printf("\nRest ist %i",rest1);
            printf("\nBogenmass %i",bogenmass1);
            break;
        case ('t') :
            zahl3=zahl1/zahl2;
            rest1=zahl1/zahl2;
            bogenmass1=3.142/zahl3;
            printf("\nErgebnis: %i", zahl1 / zahl2);
            printf("\nBogenmass %i",bogenmass1);
            printf("\nRest ist %i",rest1);
            break;
        case ('c') :
            zahl3=zahl1/zahl2;
            rest1=zahl1/zahl2;
            bogenmass1=3.142/zahl3;
            /* EasyCODE - */
            printf("\nErgebnis: %i", (zahl1 / zahl2)*3.142);
            printf("\nRest ist %i",rest1);
            printf("\nBogenmass %i",bogenmass1);
            break;
        case ('s') :
            zahl3=zahl1/zahl2;
            rest1=zahl1/zahl2;
            bogenmass1=3.142/zahl3;
            printf("\nErgebnis: %i", zahl1 / zahl2);
            printf("\nRest ist %i",rest1);
            printf("\nBogenmass %i",bogenmass1);
            break;
        case ('E') :
        case ('e') :
            break;
        default :
            printf("Fehler: Diese Eingabe ist nicht möglich!");
            break;
            }
       }
     
   }}
   while(auswahl != 'b');
   return 0;
 }

Warum kommt

switch(auswahl)

zweimal vor?

Das zweite switch(auswahl) liegt in einem case des ersten switch und wird damit auch nie aufgerufen.

Uebrigens ist an diesem Code nix C++, das ist pur C.

Ausserdem viel mir das auf:

zahl3=zahl1/zahl2;
if(zahl2 == 0)
 printf("Division durch 0 nicht möglich!");
else
 rest1=zahl1%zahl2;

Bevor Du eine Fehlermeldung ausgibst, stuerzt Dein Programm schon mit einer Division durch 0 ab.

Soweit sogut habe alles geändert und nun läuft alles prima bis auf der mist mit der division durch 0.Soll ich den Teil hier

if(zahl2 == 0)
           printf("Division durch 0 nicht möglich!");
       else
          rest1=zahl1%zahl2;
          printf("Ergebnis: %i", zahl1 / zahl2);
            printf("\nRest ist %i",rest1);

weglassen und vieleicht einfach nur

rest1=zahl1%zahl2;
          printf("Ergebnis: %i", zahl1 / zahl2);
            printf("\nRest ist %i",rest1);

stehen lassen oder gibs da ne andere Möglichkeit diesen Fehler zu beheben?

if( zahl2 == 0 )
{
   printf( "Division durch 0!\n" );
}
else
{
   zahl3 = zahl1 / zahl2;
   rest1 = zahl1 % zahl2;
   printf( "Ergebnis: %d, Rest: %d\n", zahl3, rest1 );
}

Na dann vielen Dank für die Antworten und ich wünsche noch einen schönen Abend.

grüsse Tobias


« unistd.hHilfe: Sortieren von 4 Zahlen in C++ »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Grundstrich
Der Begriff des Grundstrichs im Bereich der Typografie, bezeichnet den senkrechten Strich der Buchstaben. Bei Schriftarten mit variabler Strichstärke, wie zum Beispi...

Haarstrich
Der Begriff Haarstrich stammt aus dem Bereich der Typographie. Bei Schriften, wie zum Beispiel der Antiquaschrift mit unterschiedlichen Strichstärken, wird zwischen ...

Pulldown Menü
  Der Begriff "Pull-down-Menü", oder "Dropdown-Menü" bezeichnet eine bestimmte Art von Menü in Benutzeroberflächen, das eine Liste von Funktio...