Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Taschenrechenr mit switch und case

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.01.2007, 18:02 Uhr
Wanja



Hallo erstmal an alle, ich bin neu hier im Forum, wäre euch sehr dankbar wenn ihr mir bei folgendem Problem helfen könntet:
Ich will einen Taschenrechenr programmieren, als erstes nur mit zwei Zahlen, danach ausweiten auf beliebig viele.

Das Programm habe ich soweit fertig (siehe unten), nun möchte ich noch das Ergebnis, anzeigen lassen, abhängig davon welches Rechenzeichen ich natürlich gewählt habe. Mir ist kalr das da gewisse Dinge noch fehlen damit das alles auch funktioniert deshalb habe ich mich an euch gewendet.

Ich danke im voraus


C++:
#include <stdio.h>

main()
{
    int Zahl1,Zahl2;
    char Rechenzeichen;

    printf("geben sie die erste Zahl ein: ");
    scanf ("%d", &Zahl1);

    printf ("geben sie das Rechenzeichen ein: ");
    scanf("%c", &Rechenzeichen);

    printf ("geben sie die zweite Zahl ein: ");
    scanf("%d", &Zahl2);

    
    
    switch (Rechenzeichen){
    case   1: Zahl1 + Zahl2; break;
    case '-': Zahl1 - Zahl2; break;
    case '*': Zahl1 * Zahl2; break;
    case '/': Zahl1 / Zahl2; break;
    }
    
}



Bearbeitung von 0xdeadbeef:

cpp-tags eingefügt, Einrückung sinnvoll gestaltet.


Dieser Post wurde am 20.01.2007 um 18:40 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.01.2007, 18:42 Uhr
0xdeadbeef
Gott
(Operator)



C++:
#include <stdio.h>

int main(void)
{
    int Zahl1, Zahl2, Ergebnis;
    char Rechenzeichen;

    printf("geben sie die erste Zahl ein: ");
    scanf ("%d", &Zahl1);

    printf ("geben sie das Rechenzeichen ein: ");
    scanf("%c", &Rechenzeichen);

    printf ("geben sie die zweite Zahl ein: ");
    scanf("%d", &Zahl2);

    switch (Rechenzeichen){
    case '+': Ergebnis = Zahl1 + Zahl2; break;
    case '-': Ergebnis = Zahl1 - Zahl2; break;
    case '*': Ergebnis = Zahl1 * Zahl2; break;
    case '/': Ergebnis = Zahl1 / Zahl2; break;
    }

    printf("%d\n", Ergebnis);

    return 0;
}


...beachte, dass / in diesem Fall eine Integerdivision ist, ggf. musst du also noch nach double umcasten.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.01.2007, 19:29 Uhr
Wanja



mhh, danke aber es funktioniert noch nicht.habd as programm umgestellt das ich zuerst beide zahlen eingebe und dann das rechenzeichen.
ich komme nur bis zur eingabe der beiden zahlen, danach bricht es ab und sagt mir das die variable Ergebnis nicht defieniert ist. was kann da sein?



C++:
#include <stdio.h>

int main(void)
{
    int Zahl1, Zahl2, Ergebnis;
    char Rechenzeichen;

    printf("geben sie die erste Zahl ein: ");
    scanf ("%d", &Zahl1);
    
    printf ("geben sie die zweite Zahl ein: ");
    scanf("%d", &Zahl2);

    printf ("geben sie das Rechenzeichen ein: ");
    scanf("%c", &Rechenzeichen);

    switch (Rechenzeichen){
    case '+': Ergebnis = Zahl1 + Zahl2; break;
    case '-': Ergebnis = Zahl1 - Zahl2; break;
    case '*': Ergebnis = Zahl1 * Zahl2; break;
    case '/': Ergebnis = Zahl1 / Zahl2; break;
    }

    printf("%d\n", Ergebnis);

    return 0;
}



mod edit: BENUTZE DIE CPP TAGS SELBER

Dieser Post wurde am 21.01.2007 um 12:53 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.01.2007, 19:48 Uhr
Blubber2063



Cpp Tags benutzen hilft, du musst die Eingabe vorher säubern, sonst nimmt er das linefeed als Char den er rausliest. Also machst du vorher ein fflush(stdin); dann geht es:

C++:
#include <stdio.h>

int main(void)
{
int Zahl1, Zahl2, Ergebnis = 0;
char Rechenzeichen;
char buffer[5];

printf("geben sie die erste Zahl ein: ");
scanf ("%d", &Zahl1);

printf ("geben sie die zweite Zahl ein: ");
scanf("%d", &Zahl2);

printf ("geben sie das Rechenzeichen ein: ");
fflush(stdin);
scanf("%c", &Rechenzeichen);

switch (Rechenzeichen){
case '+': Ergebnis = Zahl1 + Zahl2; break;
case '-': Ergebnis = Zahl1 - Zahl2; break;
case '*': Ergebnis = Zahl1 * Zahl2; break;
case '/': Ergebnis = Zahl1 / Zahl2; break;
}

printf("Ergebnis : %d\n", Ergebnis);

return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.01.2007, 20:04 Uhr
0xdeadbeef
Gott
(Operator)


fflush(stdin) funktioniert nur unter windows.

So funzts:

C++:
#include <stdio.h>
#include <string.h>

int main(void)
{
    int Zahl1, Zahl2, Ergebnis;
    char Rechenzeichen;

    printf("geben sie die erste Zahl ein: ");
    scanf ("%d", &Zahl1);

    printf ("geben sie das Rechenzeichen ein: ");
    while(!strchr("+-*/", (Rechenzeichen=getchar())));

    printf ("geben sie die zweite Zahl ein: ");
    scanf("%d", &Zahl2);

    switch (Rechenzeichen){
    case '+': Ergebnis = Zahl1 + Zahl2; break;
    case '-': Ergebnis = Zahl1 - Zahl2; break;
    case '*': Ergebnis = Zahl1 * Zahl2; break;
    case '/': Ergebnis = Zahl1 / Zahl2; break;
    }

    printf("%d\n", Ergebnis);

    return 0;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.01.2007, 20:07 Uhr
~f.-th.
Gast


scanf ist wie fflush compilerspezifisch.

Einige Compiler funktionieren ohne fflush aber dafür mit einem Leerzeichen zwischen " und %.
Ausprobieren!

MfG f.-th.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.01.2007, 22:38 Uhr
Blubber2063



Naja in der Umsetzung vielleicht, gehört aber zum C standard. fflush ist Windows, ich weiss, aber hab in meinem stdio.h file nix besseres gefunden, hatte jetzt auch nur unter Windows geschaut.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: