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

Fab

Treue Seele

  • »Fab« ist der Autor dieses Themas

Beiträge: 85

Wohnort: Iwo in der Eifel - nähe von Euskirchen

Beruf: Schüler

  • Private Nachricht senden

1

29.12.2008, 13:17

Falsche Rückgabe

Hi
ich habe das Beispiel aus dem Buch, wo man zum erstenmal die Programme in verschiedene Parts splittet in einer abgewandelten Form nachporgrammiert. Nun geben mir die Funktionen aber nicht den richtigen Rückgabewert.
Hab so dies und das Probiert, es klappt aber nicht.
Hier ist mein Code:

main.cpp:

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
#include <iostream>
#include "character.hpp"
using namespace std;

int main() {

    int nStaerke;
    float fGeschw;
    int nProzent;

    cout << "Geben sie die aktuelle Staerke ein: ";
    cin >> nStaerke;
    cout << endl;

    cout << "Geben sie die aktuelle Geschwindigkeit ein: ";
    cin >> fGeschw;
    cout << endl;

    cout << "Geben sie den Prozentsatz des Wachstums ein (Ganzzahl): ";
    cin >> nProzent;
    cout << endl;

    cout << "Characterwerte:" << endl;
    cout << "Staerke: " << addProzent(nStaerke, nProzent) << endl;
    cout << "Geschwindigtkeit: " << addProzent(fGeschw, nProzent) << endl;

    cin.sync();
    cin.get();

    return 0;
}


character.hpp:

C-/C++-Quelltext

1
2
int addProzent(int nWert, int nProzent);
float addProzent(float fWert, int Prozent);


character.cpp:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include "character.hpp"

int addProzent(int nWert, int nProzent) {
    return (static_cast<int>(nWert * (1 + (nProzent /100))));
}

float addProzent(float fWert, int nProzent) {
    return (fWert * (1 + (nProzent /100)));
}


Die Ausgabe ist bei der Eingabe von:

Staerke: 100
Geschw. : 100
Prozentsatz: 5

bei beiden trotzdem 100.

Wie kommt das?
Ich hoffe ihr könnt mir helfen.

MFG
Fab
;)
Eins hab ich erkannt - ich werde immer Schüler bleiben, ein Leben lang

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

29.12.2008, 13:24

Du musst den int vor der Division nach float casten, oder die Division erst nach der Multiplikation durchführen.

Denn 1 / 100 ist nicht 0.01, sondern 0 - weil hier mit ints gerechnet wird.

Dein static_cast<int> ist überflüssig, da es sowieso schon ints sind.

Fab

Treue Seele

  • »Fab« ist der Autor dieses Themas

Beiträge: 85

Wohnort: Iwo in der Eifel - nähe von Euskirchen

Beruf: Schüler

  • Private Nachricht senden

3

29.12.2008, 13:48

Danke

Danke.
Jetzt klappts.

Hab den Quellcode jetzt entsprechend abgeändert.

Greetings Fab ;)
Eins hab ich erkannt - ich werde immer Schüler bleiben, ein Leben lang

Werbeanzeige