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

51

21.06.2006, 14:23

Wo ist das Problem? Wenn du es durch 100 teilst hast du ein Prozent und dann multiplizierst du es noch mit z.B. zehn, wenn du zehn Prozent haben willst.
Ich gebe bei der Arbeit immer 100%

6% Montags
30% Dienstags
35% Mittwochs
25% Donnerstag
4% Freitag

52

21.06.2006, 14:34

Zitat von »"Anfänger"«

Wo ist das Problem? Wenn du es durch 100 teilst hast du ein Prozent und dann multiplizierst du es noch mit z.B. zehn, wenn du zehn Prozent haben willst.


Was?

Also nehmen wir mal 200

200/100 = 2 = 1%
2*10= 10% Aber es geht darum das Im C++ code zu verarbeiten (siehe frühere posts)
Gruß

kalo

--------------------------------------------------------------
Wichtig:
Das Krümmelmonster darf aus Gesundheitsgründen nurnoch Gemüse essen.

Lemming

Alter Hase

Beiträge: 550

Beruf: Schüler

  • Private Nachricht senden

53

21.06.2006, 16:40

ehrlich gestanden versteh ich nicht was das problem ist...

in code geht das so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
// 200 + 10%

float fNewVal = 200 * 1.1f; // = 220


// 200 + 1%

float fNewVal = 200 * 1.01f; // = 202


// 200 - 20%

float fNewVal = 200 * 0.8; // = 160
Es gibt Probleme, die kann man nicht lösen.
Für alles andere gibt es C++...

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

54

21.06.2006, 18:10

Es hilft übrigends, die Aufgabe richtig zu lesen.

Dort steht nicht, dass beide Werte in einer Funktion geändert werden sollen. Du brauchst überladene Funktionen, weil eines der Attribute als int und das andere als float gespeichert werden soll.

Es ist auch nicht von Belang, ob du den Wert um einen gewissen Prozentsatz oder um einen konstanten Wert anheben sollst. Es geht nur darum, zwei Funktionen zu schreiben, die zwei Argumente annehmen; den Originalwert und einen zweiten Wert, der beschreibt, wie die Änderung aussehen soll.

Ein Ergebnis, dass eine Funktion mittels return liefert, muss man sich auch an der Stelle merken, wo die Funktion aufgerufen wird. Sonst ist es einfach futsch. Eine Funktion kann auch immer nur ein Ergebnis liefern. Aber wir brauchen ja zwei Funktionen, ja?

Mit dem im Hinterkopf würde ich mich einfach nochmal an die Implementation machen. Vieleicht hilft es ja... und denke einfach nicht über Zeiger, Referenzen und größen von Variablen nach. Das ist zur Lösung der Aufgabe auch noch gar nicht nötig.

MfG,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

55

21.06.2006, 18:34

Und wenn du wissen willst wie man das C++ Code verarbeitet schau auf Seite 2 in dem Code von mir (In der AddPercentage Funktion).
Ich gebe bei der Arbeit immer 100%

6% Montags
30% Dienstags
35% Mittwochs
25% Donnerstag
4% Freitag

56

16.07.2006, 19:15

Ich hatte genau dasselbe Problem wie der Ersteller und bin fast verzweifelt... Immer wieder hab ich versucht, den Wert zurückzugeben, in allen hier beschriebenen Variationen. Nichts hat dazu geführt, dass die Werte verändert wurden. Doch jetzt, nach 2 Stunden suchen ( Und, ich gebe zu, mit Lösung anschauen), habe ich den verflixten Fehler gefunden.

Hier meine erste (2. Letzte - also etwa 50ste Version):

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
#include <iostream>

using namespace std;

int addProzent (int Zahl, int Prozent);
float addProzent (float fZahl, int Prozent);

int main ()
{
    
    int Prozent = 0;
    int Zahl = 0;
    
    float fZahl = 0;

    cout << "Bitte Starke eingeben: ";
    cin >> Zahl;

    cout << "Bitte Geschwindigkeit eingeben: ";
    cin >> fZahl;

    cout << "Bitte Prozente eingeben: ";
    cin >> Prozent;

    cout << "\n\n\nStaerke vorher: " << Zahl << endl;
    cout << "Geschwindigkeit vorher: " << fZahl;
    

    addProzent (Zahl, Prozent);
    addProzent (fZahl, Prozent);

    cout << "\n\n\nStaerke nachher: " << Zahl << endl;
    cout << "Geschwindigkeit nachher: " << fZahl << endl;

    return 0;
}

int addProzent (int Zahl, int Prozent)
{
return Zahl+Zahl/100*Prozent;
}


float addProzent (float fZahl, int Prozent)
{
return fZahl+fZahl/100*Prozent;
}

Tjeaaa.. Das hat nicht geklappt. Hab es auch mit den komischen, nicht verstandenen Versionen a la:

C-/C++-Quelltext

1
2
3
4
float addProzent (float &fZahl, int &Prozent)
{
fZahl+fZahl/100*Prozent;
}


versucht, hat auch nicht geklappt. (warning C4552: '+' : Operator hat keine Auswirkungen; Operator mit Seiteneffekt erwartet --- error C4716: 'addProzent' : Muß einen Wert zurückgeben --- blablabla zurückgeben "ICH WEISS! ABER WIE *KopfaufdieTastaturhau*")

und da war mein Fehler (hier korrigiert):

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
int main ()
{
    
    int Prozent = 0;
    int Zahl = 0;
    
    float fZahl = 0;

    cout << "Bitte Starke eingeben: ";
    cin >> Zahl;

    cout << "Bitte Geschwindigkeit eingeben: ";
    cin >> fZahl;

    cout << "Bitte Prozente eingeben: ";
    cin >> Prozent;

    cout << "\n\n\nStaerke vorher: " << Zahl << endl;
    cout << "Geschwindigkeit vorher: " << fZahl;
    

    Zahl = addProzent (Zahl, Prozent);
    fZahl = addProzent (fZahl, Prozent);

    cout << "\n\n\nStaerke nachher: " << Zahl << endl;
    cout << "Geschwindigkeit nachher: " << fZahl << endl;

    return 0;
}



und schon klappt es mit der umrechnung - die Zuordnung hat gefehlt. War jedenfalls bei mir der Fehler, nicht das returnen... oder aber ich bin zu doof und sehe den Weg ohne dieses Zuordnen nicht?



Danke Jungs, super Arbeit die ihr hier im Forum leistet. Das meiste verwirrt mich zwar zusätzlich, aber in all der Zeit wo ich hier verwirrt versucht habe Informationen aus euren zum Teil sehr Komplexen Antworten rauszusuchen, habe ich viel gelernt.

Vielleicht hilft ja mein bescheidener Noob Beitrag einem andern Anfänger, der genau den gleichen Fehler gemacht hat wie ich...

Werbeanzeige