Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: C (alle ISO-Standards) ::  Switch - Anweisung funktioniert nicht  
Gehen Sie zu Seite 1, 2  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Brucelee
Unregistrierter




Beitrag Brucelee Unregistrierter 14:28:04 10.01.2018   Titel:   Switch - Anweisung funktioniert nicht            Zitieren

Hallo das ist mein C++ Code

C++:
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
#include <stdio.h>
 
int main()
 
{
    int zahl1, zahl2, erg = 0;
    char op;
 
    printf(" Bitte 1. Zahl eingeben:");
    scanf("%i", &zahl1);
 
    printf(" Bitte 2. Zahl eingeben:");
    scanf("%i", &zahl2);
 
    printf(" Bitte Rechenoperation auswaehlen:");
    scanf("%s", &op);
 
 
        //Switchcase Anweisung
 
        switch (op)
        {
            case '+':
                erg = zahl1 + zahl2;
                printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg);
                break;
 
            case '-':
                erg = zahl1 - zahl2;
                printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg);
 
            case '*':
                erg = zahl1 + zahl2;
                printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg);
 
            case '/':
                erg = zahl1 / zahl2;
                printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg);
 
            default:
                printf("Sie haben keine Operation gewählt....\n");
                break;
 
 
                return 0;
 
        }
 
 
}


Das ist mein eAusgabe

Bitte 1. Zahl eingeben:3
Bitte 2. Zahl eingeben:3
Bitte Rechenoperation auswaehlen:+
Das Ergebnis Ihrer Rechnung lautet: 3

Process returned 0 (0x0) execution time : 6.735 s
Press any key to continue.


Ich weiß nicht warum ich ein falsches Ergebniss bekommme

Ich wäre für eine Antwort sehr dankbar
Belli
Mitglied

Benutzerprofil
Anmeldungsdatum: 29.08.2009
Beiträge: 2714
Beitrag Belli Mitglied 14:45:05 10.01.2018   Titel:              Zitieren

Ändere
C++:
scanf("%s", &op);
in
C++:
scanf("%c", &op);
inflames2k
Mitglied

Benutzerprofil
Anmeldungsdatum: 02.06.2009
Beiträge: 1552
Beitrag inflames2k Mitglied 15:19:20 10.01.2018   Titel:              Zitieren

Zusätzlich folgende Dinge nach Durchsicht deines Codes:

1. Spätestens wenn du Subtrahierst, wirst du zusätzlich Dividieren und Multiplizieren.
2. Du wirst dich wundern was bei deiner Multiplikation raus kommt. Das Produkt der beiden Zahlen jedenfalls nicht.
Brucelee
Unregistrierter




Beitrag Brucelee Unregistrierter 16:00:03 10.01.2018   Titel:              Zitieren

C++:
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
#include <stdio.h>
 
int main()
 
{
    int zahl1, zahl2, erg = 0;
    char op;
 
    printf(" Bitte 1. Zahl eingeben:");
    scanf("%i", &zahl1);
 
    printf(" Bitte 2. Zahl eingeben:");
    scanf("%i", &zahl2);
 
    printf(" Bitte Rechenoperation auswaehlen:");
    scanf("%c", &op);
 
 
        //Switchcase Anweisung
 
        switch (op)
        {
            case '+':
                erg = zahl1 + zahl2;
                printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg);
                break;
 
            case '-':
                erg = zahl1 - zahl2;
                printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg);
 
            case '*':
                erg = zahl1 + zahl2;
                printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg);
 
            case '/':
                erg = zahl1 / zahl2;
                printf(" Das Ergebnis Ihrer Rechnung lautet: %i\n ", erg);
 
            default:
                printf("Sie haben keine Operation gewählt....\n");
                break;
 
 
                return 0;
 
        }
 
 
}





Jetzt bekomme ich das hier

Bitte 1. Zahl eingeben:111
Bitte 2. Zahl eingeben:222
Bitte Rechenoperation auswaehlen:Sie haben keine Operation gewõhlt....

Process returned 0 (0x0) execution time : 5.794 s
Press any key to continue.
Jockelx
Mitglied

Benutzerprofil
Anmeldungsdatum: 19.12.2009
Beiträge: 1398
Beitrag Jockelx Mitglied 16:07:55 10.01.2018   Titel:              Zitieren

Deine Rechenoperation ist '\n'.

siehe "Why does everyone say not to use scanf? What should I use instead?"
http://c-faq.com/stdio/scanfprobs.html
Th69
Mitglied

Benutzerprofil
Anmeldungsdatum: 25.03.2008
Beiträge: 4950
Beitrag Th69 Mitglied 16:12:22 10.01.2018   Titel:              Zitieren

C:
scanf(" %c", &op);

Beachte das Leerzeichen (dadurch werden Whitespaces überlesen)!
Brucelee
Unregistrierter




Beitrag Brucelee Unregistrierter 17:30:35 10.01.2018   Titel:              Zitieren

Danke für eure Hilfe

Habe es etwas umgeändert

C++:
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
#include <stdio.h>
#include <iostream>
 
using namespace std;
 
int main()
 
{
    int zahl1, zahl2, erg = 0;
    char op;
 
    cout << " Bitte 1. Zahl eingeben: "<<endl;
    cin >> zahl1;
 
    cout <<" Bitte 2. Zahl eingeben: "<<endl;
    cin >> zahl2;
 
    cout <<" Bitte Rechenoperation auswaehlen: "<<endl;
    cin >> op;
 
 
        //Switchcase Anweisung
 
        switch (op)
        {
            case '+':
                erg = zahl1 + zahl2;
                cout<< " Das Ergebnis Ihrer Rechnung lautet: \n "<< erg <<endl;
                break;
 
            case '-':
                erg = zahl1 - zahl2;
                cout<<" Das Ergebnis Ihrer Rechnung lautet: \n "  << erg<<endl;
                break;
 
            case '*':
                erg = zahl1 * zahl2;
                cout<<" Das Ergebnis Ihrer Rechnung lautet: \n " << erg <<endl;
                break;
 
            case '/':
                erg = zahl1 / zahl2;
                cout<<" Das Ergebnis Ihrer Rechnung lautet: \n " << erg <<endl;
                break;
 
            default:
                cout<<" Sie haben keine Operation gewählt....\n "<<endl;
                break;
 
 
                return 0;
 
        }
 
 
}


Jetzt klappt es

Nur eine Frage wie kann ich es vehrindenr das er durch 0 teilt ?

am besten durch eine do While schleife ?
Belli
Mitglied

Benutzerprofil
Anmeldungsdatum: 29.08.2009
Beiträge: 2714
Beitrag Belli Mitglied 17:39:28 10.01.2018   Titel:              Zitieren

C++:
1
2
3
4
5
6
7
8
9
10
11
            case '/':
                if(zahl2 == 0)
                {
                   cout<<" Division durch 0 ist nicht erlaubt \n ";
                }
                else
                {
                   erg = zahl1 / zahl2;
                   cout<<" Das Ergebnis Ihrer Rechnung lautet: \n " << erg <<endl;
                }
                break;
Brucelee
Unregistrierter




Beitrag Brucelee Unregistrierter 21:33:08 10.01.2018   Titel:              Zitieren

Vielen Dank
axels.
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.10.2016
Beiträge: 169
Beitrag axels. Mitglied 22:44:46 10.01.2018   Titel:              Zitieren

Nur hast du jetzt kein C mehr sondern C++
C++ Forum :: C (alle ISO-Standards) ::  Switch - Anweisung funktioniert nicht  
Gehen Sie zu Seite 1, 2  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.