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

Stike

Frischling

  • »Stike« ist der Autor dieses Themas

Beiträge: 3

Wohnort: Stuttgart

  • Private Nachricht senden

1

19.09.2006, 19:13

Kapitel 4.9 Aufgabenstellung

Hallo!
Finde das Buch super und bin nun auf Seite 111 angelangt! Doch leider komme ich mit meiner Lösung nicht so ganz weiter... Was ist daran falsch?

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
// Aufgabe409.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.

//


#include <iostream>

using namespace std;

void LevelUpStaerke (int Staerke, int Prozent);
void LevelUpSpeed (float fSpeed, int Prozent);


int main ()
{
    // Variablen

    int Staerke = 100;
    int Prozent = 20;
    float fSpeed = 100.5f;

    // Dateneingabe

    cout << "Bisherige Staerke: ";
    cin >> Staerke;
    cout << "Bisheriger Speed: ";
    cin >> fSpeed;
    cout << "Prozentsatz fuer LevelUp: ";
    cin >> Prozent;
    cout << endl << endl;

    LevelUpStaerke (int Staerke, int Prozent);
    LevelUpSpeed (float fSpeed, int Prozent);

    return 0;
}

void LevelUpStaerke (int Staerke, int Prozent)
{
    cout << "Neue Staerke: " << (Staerke+Staerke/100*Prozent);
}

void LevelUpSpeed (float fSpeed, int Prozent)
{
    cout << "Neuer Speed: " << (fSpeed+fSpeed/100*Prozent);
}




Gruß,
Steffen

Anonymous

unregistriert

2

19.09.2006, 19:16

Gib mal die Fehlermeldungen und einen flaot solltest du nicht mit einem
Integer teilen...

Stike

Frischling

  • »Stike« ist der Autor dieses Themas

Beiträge: 3

Wohnort: Stuttgart

  • Private Nachricht senden

3

19.09.2006, 19:23

Zitat von »"Riddick"«

Gib mal die Fehlermeldungen und einen flaot solltest du nicht mit einem
Integer teilen...


Sollte man nicht oder darf man nicht?!? In der Musterlösung (Listing 4.9, Zeile 55) geschieht dies doch auch ? Oder ist das an dieser Stelle egal, weil die Funktion als float-Funktion deklariert wurde?

Fehlermeldung:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
Kompilierung läuft...
Aufgabe_4-09.cpp
E:\Programme\Microsoft Visual Studio\MyProjects\Aufgabe409\Aufgabe_4-09.cpp(28) : error C2144: Syntaxfehler : Fehlendes ')' vor Typ 'int'
E:\Programme\Microsoft Visual Studio\MyProjects\Aufgabe409\Aufgabe_4-09.cpp(28) : error C2660: 'LevelUpStaerke' : Funktion akzeptiert keine 0 Parameter
E:\Programme\Microsoft Visual Studio\MyProjects\Aufgabe409\Aufgabe_4-09.cpp(28) : error C2059: Syntaxfehler : ')'
E:\Programme\Microsoft Visual Studio\MyProjects\Aufgabe409\Aufgabe_4-09.cpp(29) : error C2144: Syntaxfehler : Fehlendes ')' vor Typ 'float'
E:\Programme\Microsoft Visual Studio\MyProjects\Aufgabe409\Aufgabe_4-09.cpp(29) : error C2660: 'LevelUpSpeed' : Funktion akzeptiert keine 0 Parameter
E:\Programme\Microsoft Visual Studio\MyProjects\Aufgabe409\Aufgabe_4-09.cpp(29) : error C2059: Syntaxfehler : ')'
Fehler beim Ausführen von cl.exe.

Aufgabe409.exe - 6 Fehler, 0 Warnung(en)



Gruß,
Steffen

Anonymous

unregistriert

4

19.09.2006, 19:26

Re: Kapitel 4.9 Aufgabenstellung

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
// Aufgabe409.cpp : Definiert den Einsprungpunkt für die Konsolenanwendung.

//


#include <iostream>

using namespace std;

void LevelUpStaerke (int Staerke, int Prozent);
void LevelUpSpeed (float fSpeed, int Prozent);


int main ()
{
    // Variablen

    int Staerke = 100;
    int Prozent = 20;
    float fSpeed = 100.5f;

    // Dateneingabe

    cout << "Bisherige Staerke: ";
    cin >> Staerke;
    cout << "Bisheriger Speed: ";
    cin >> fSpeed;
    cout << "Prozentsatz fuer LevelUp: ";
    cin >> Prozent;
    cout << endl << endl;

    LevelUpStaerke (Staerke, Prozent);
    LevelUpSpeed (fSpeed, Prozent);

    return 0;
}

void LevelUpStaerke (int Staerke, int Prozent)
{
    cout << "Neue Staerke: " << (Staerke+Staerke/100*Prozent);
}

void LevelUpSpeed (float fSpeed, int Prozent)
{
    cout << "Neuer Speed: " << (fSpeed+fSpeed/100*Prozent);
}


Das sollte funktionieren, achte mal auf die beiden Funktionsaufrufe
in der main ;)

Stike

Frischling

  • »Stike« ist der Autor dieses Themas

Beiträge: 3

Wohnort: Stuttgart

  • Private Nachricht senden

5

19.09.2006, 19:32

:idea: Man, muss ich Tomaten auf den Augen gehabt haben, danke!!

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

6

20.09.2006, 11:35

Re: Kapitel 4.9 Aufgabenstellung

Zitat von »"Riddick"«

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
[...]

void LevelUpStaerke (int Staerke, int Prozent)
{
    cout << "Neue Staerke: " << (Staerke+Staerke/100*Prozent);
}

void LevelUpSpeed (float fSpeed, int Prozent)
{
    cout << "Neuer Speed: " << (fSpeed+fSpeed/100*Prozent);
}


Autsch! Ganz so sauber bist Du wohl doch noch nicht unterwegs. Aber das ist ein typischer Fehler. Da sind wohl die meisten bereits drüber gestolpert (und dann hoffentlich und wahrscheinlich nie wieder). Vor allem typisch für diesen Fehler ist so eine "Prozent-Funktion": Es wird erst durch 100 geteilt, was beispielsweise bei allen Werten kleiner 100 zu 0 führt, und erst dann mit dem Prozentsatz multipliziert -- was im Beispiel wiederum 0 bleibt. Korrekter wäre es (im Integer-Fall) eher so:

C-/C++-Quelltext

1
Staerke   +   (Staerke * Prozent) / 100

Die Klammern sind nicht zwingend notwendig, aber bringt etwas Übersicht (und Semantik) rein und ein bisschen überflüssige Klammersetzung schadet nicht, sondern kann häufig Fehler vorbeugen.
Kommen Sie nie mit einem Schwert zu einer Schießerei.

Anonymous

unregistriert

7

20.09.2006, 12:23

Er hats aus dem Buch...

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

20.09.2006, 12:40

Ok, verstehe. Mein Beitrag kann also als allgemeiner Hinweis angesehen werden...
Kommen Sie nie mit einem Schwert zu einer Schießerei.

Werbeanzeige