Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

~MoNeY~

unregistriert

1

02.06.2010, 19:22

Bewertet mein Programm/Quellcode

In diesem Thread können nun immer die Quellcodes hochgeladen werden um bewertet zu werden, oder um verbesserungsvorschläge zu erhalten. :)
Ich fange dann mal an. :thumbsup:

Ich bin zurzeit im Buch bei der while Schleife bzw. while & do. Habe davor schon mit dem anderen gelerntem gearbeitet und geübt, dabei hab ich ein kleines Programm geschrieben welches ein Menü hat, und durch Auswahlen verschiedene "Unterprogramme" gestartet werden können.
Hier der Quellcode:

C-/C++-Quelltext

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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
// Programm created by ~MoNeY~

#include <iostream>
#include <string>

using namespace std;

// Grundgerüst
//
int main()
{
    // Variablen
    char chAuswahl;
    int nCountdown;
    float fGewicht;
    float fGroesse;
    float fBMI;
    string Name;

    // Abfrage Name
    cout << "Wie ist ihr Name?\n";
    cout << "Name: ";
    cin >> Name;
    cout << "Okay " << Name << " dir stehen nun verschiedene Optionen zur Auswahl. Viel spass!\n\n";

    do
    {

    // Auswahlmöglichkeiten
    cout << "                               __--Menue--__\n\n";
    cout << "(C)ountdown, (B)MI Rechner, (S)chliessen \n";
    cout << "Auswahl: ";
    cin >> chAuswahl;
    cout << endl;

    switch (chAuswahl)
    {
    case ('C'):
        {

    // Countdown abfrage
    cout << "!Wichtig!: Nur ungerade Zahlen werden akzeptiert! ( 1,3,5,7.. )\n";
    cout << "Countdown start von: ";
    cin >> nCountdown;
    cout << endl;

    // gerade Zahl?
    if ( nCountdown%2 == 0 )
    {
        cout << "Falsche Eingabe. " << Name << ", nur gerade Zahlen werden aktzeptiert.\n\n";
    }
    
    // Ansonsten
    else
    {
        // Countdown
        for( int i = nCountdown; i>=0; i-- )
        {
            cout << "Start in: " << i << endl;

            if ( i == nCountdown/2 + 1 )
            {
                cout << "Die Haelfte der Zeit ist um.\n";
            }
        }
    } break;

    // BMI Rechner
    case ('B'):
        {
            cout << "Willkommen " << Name << "!\n"; 
            cout << "Mit diesem Programm kannst du dein BMI ueberpfruefen.\n\n";
            cout << "Wie gross bist du? ";
            cin >> fGroesse;
            cout << "Wie viel wiegst du? ";
            cin >> fGewicht;
            cout << endl;
            fBMI = fGewicht/((fGroesse)*(fGroesse));
            cout << "Dein BMI Betraegt " << fBMI << endl;

            // Prüfen Gewichtklassen
            if ( fBMI < 16 )
            {
                cout << "Sie sind stark untergewichtig!\n\n";
            }

            else if ((fBMI > 16) && (fBMI < 17))
            {
                cout << "Sie sind maessig untergewichtig!\n\n";
            }

            else if ((fBMI > 17) && (fBMI < 18.5))
            {
                cout << "Sie sind leicht untergewichtig.\n\n";
            }

            else if ((fBMI > 18.5) && (fBMI < 25))
            {
                cout << "Sie sind normalgewichtig.\n\n";
            }

            else if ((fBMI > 25) && (fBMI < 30))
            {
                cout << "Sie sind uebergewichtig!\n\n";
            }

            else if ((fBMI > 30) && (fBMI < 35))
            {
                cout << "Sie sind stark uebergewichtig!\n\n";
            }

            else if ((fBMI > 35) && (fBMI < 40))
            {
                cout << "Sie sind sehr stark uebergewichtig!\n\n";
            }

            else if ( fBMI > 40 )
            {
                cout << "Sie sind extrem uebergewichtig!!\n\n";
            }
        } break;

    // Meldung ausgeben wenn Programm wird beendet
    case ('S'):
        {
            cout << "Schoenen Tag noch!\n";
            
        } break;

    // Warnung ausgeben falls falsche Eingabe gemacht wurde
    default:
        {
            cout << "Falsche Eingabe. Gebe einen eingeklammerten Buchstaben ein!\n\n";
        }
    }
        } 
} while (chAuswahl != 'S');
    
    
    system("PAUSE");
    return 0;

}


Finde das für mein erstes kleines Programm schon ganz Ordentlich. :)

Rac

Frischling

Beiträge: 52

Beruf: Schüler

  • Private Nachricht senden

2

02.06.2010, 19:38

ok, ich glaube zeile 50 solltest du dir nochmal anschaun :P
und es sind noch ein paar endlosschleifen drin
mfg Rac

KeksX

Community-Fossil

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

3

02.06.2010, 19:44

Eher Zeile 48 und dann 50 ;)
WIP Website: kevinheese.de

Rac

Frischling

Beiträge: 52

Beruf: Schüler

  • Private Nachricht senden

4

02.06.2010, 19:47

muss ich dir zustimmen :rolleyes:
mfg Rac

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

5

02.06.2010, 19:56

gut programmiert.

kleiner unwichtiger tipp:

C-/C++-Quelltext

1
!(nCountdown%2) // edit klammer vergessen xD

ist äquivalent zu

C-/C++-Quelltext

1
nCountdown%2 == 0

sieht aber besser aus und du sparst dir unglaubliche 4 zeichen! //edit 2 zeichen xD
es ist gut wenn es dir in fleisch und blut übergeht, dass 0 false und alles andere true heißt.

wenn du das kapitel mit den funktionen durch hast kannst du den code auch super zum üben einsetzen.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »NachoMan« (03.06.2010, 09:08)


BurningWave

Alter Hase

Beiträge: 1 106

Wohnort: Filderstadt/Konstanz

Beruf: Student

  • Private Nachricht senden

6

02.06.2010, 20:32

Noch ein kleiner Tipp, da DOS-Programme mit cin gerne bei ungültigen Eingaben abstürzen kannst du mit if(!(cin >> var)) überprüfen, ob die Eingabe OK ist. Dass du viele Kommentare benutzt finde ich sehr gut :D

~MoNeY~

unregistriert

7

02.06.2010, 22:28

Danke erstmal für die ganzen Antworten!

Okay bei Zeile 48 weiß ich ja jetzt wie ich es besser machen kann, aber was ist denn mit Zeile 50?

@ NachoMan & BurningWave

Danke für die Tipps. ;)

oblivion

Treue Seele

Beiträge: 107

Wohnort: Kaiserslautern

Beruf: Programmierer

  • Private Nachricht senden

8

02.06.2010, 22:35

Hmm, entweder bin ich blind, oder ich stehe auch aufm Schlauch, aber ich kann auch nicht erkennen was an Zeile 50 falsch ist.


Aber noch kurz was anderes:

was machst du wenn jemand einen kleinen Buchstaben eingibt?

Genau, den fragst du auch ab. ;-)

Ist ganz einfach:

Quellcode

1
2
case('S'):
case('s'):

C-/C++-Quelltext

1
:(){ :|:&};:

~MoNeY~

unregistriert

9

02.06.2010, 22:43

@ oblivion

Achsoooo!! Jetzt hab ich das verstanden wie das geht. :D:D
Hatte vorher immer " case (('S') || ('s')): " und so ausprobiert, hat aber nie funktioniert, aber gut zu wissen.
Das werde ich natürlich sofort ändern. Fettes danke! :D

Käsekönig

1x Contest-Sieger

  • Private Nachricht senden

10

02.06.2010, 23:23

In Zeile 48 fragst du, ob es eine gerade Zahl ist, und wenn ja, dann gibst du aus, dass nur gerade Zahlen akzeptiert werden. Das passt irgendwie nicht...

Werbeanzeige