PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem c++



glookie1
25.11.2007, 15:33
Hab bei einem meiner Programm ein Problem wenn ich es starte und ich die Werte eingebe, dann spuckt es entweder 0 oder 1.2 e^123455oder so ähnlich aus was mach ich falsch hier der code


int main(int argc, char *argv[])
{
double k=0; //Kontostand
double p=0; //Prozentsatz
int j=0; //angegebene Jahre
int count=1; //vergangene Jahre
printf("Dies ist ein Programm zum Berechnen des eigenen Kontostandes in einigen Jahren."); //Kopfzeile
printf("Wenn sie Kommazahlen angeben, passen sie auf,\n dass sie in der folgenden Form sind:\n xxx.yy (durch Punkt getrennt und mit 2 stellen hinter dem Komma)");
printf("\n\nGeben sie bitte ihr Gesamtvermoegen eines Kontos an.\n"); //Kontostand angeben
scanf("%e",&k);
printf("%e",&k);
printf("\n\nGeben sie bitte den Prozentsatz an Zinsen an den sie im Jahr bekommen.\n"); //Prozentsatz angeben
scanf("%f", &p);
printf("\n\nGeben sie bitte an fuer wie viele Jahre sie das Ergebnis moechten\n(wenn sie 4 eingeben erhalten Sie das Ergebnis fuer die naechsten 4 Jahre).\n");
scanf("%d", &j);
while(count<=j)
{
++count;
k=k*(1+(p/100)); //Rechnung
printf("\n\n --> ERGEBNIS: <--\n\nNach einem weiteren Jahr haben sie %10.2f\n\n\n-----------------------\n\n",&k);
}

system("PAUSE");
return 0;
}


Danke für alle Antworten im voraus
glookie1[/code]

l0dsb
25.11.2007, 15:38
Der Fehler steckt vermutlich hier:


printf("\n\n --> ERGEBNIS: <--\n\nNach einem weiteren Jahr haben sie %10.2f\n\n\n-----------------------\n\n",&k);

wird zu


printf("\n\n --> ERGEBNIS: <--\n\nNach einem weiteren Jahr haben sie %10.2f\n\n\n-----------------------\n\n",k);

&k ist die Adresse der Variable k, k lediglich ihr Inhalt, den du bei printf ja auslesen willst.

]=-antr4xx-=[
26.11.2007, 10:51
ausserdem soltest du int oder sowas nehmen, denn Gleitpunkttypen sind für Kontostände nicht unbedingt geeignet...

glookie1
26.11.2007, 13:07
danke :D gleich ma ausprobieren obs geht

aber wenn ich int nehme kann ich doch keine kommazahlen nehmen...oder??

edit1:funktioniert einwandfrei hab anstelle von double noch float genommen und siehe da... funktioniert :D

]=-antr4xx-=[
27.11.2007, 12:01
wenn ich int nehme kann ich doch keine kommazahlen nehmen...oder??
doch, das kannst du indirekt, indem du in cent speicherst.

Hier ein Beispiel



int kontostand = 1254 //12€ 54 Cent

printf("%d.%d", kontostand%100, kontostand-(kontostand%100))


wenn ich mich irre, sagt es mir...

NEAVORC
29.11.2007, 10:48
man kann doch für Dezimalzahlen auch "float" nehmen oder?

zao
29.11.2007, 11:07
float == gleitkommazahl

]=-antr4xx-=[
29.11.2007, 13:58
man kann doch für Dezimalzahlen auch "float" nehmen oder?
Eigentlich nicht, da schwankt die Genauigkeit übelst...

Hamachi-1
29.11.2007, 18:10
Kann man nicht cout<<"text"<<endl; nehmen statt printf?
printf kommt aus C wen ich mich nicht irre :D

rob00n
29.11.2007, 19:55
Natürlich kannst du das nehmen.
Warum nicht?

zao
30.11.2007, 12:52
is aber keineswegs vorteilhaft, da du die iostream einbinden musst, das heisst deine exe vergrößert sich enorm
printf ist auch in stdio.h enthalten

mfg

zao

l0dsb
30.11.2007, 15:14
Das betreffend habe ich die Erfahrung gemacht, dass es manchmal egal ist, was man einbindet. Ich mache nicht oft etwas mit Konsole (nur bezüglich der Schule atm).

Wir verwenden die C-Funktionen, sprich printf etc., und binden dazu die iostream ein. Ein Unterschied zur kleineren stdio.h (von den Libraries her) ist mir nicht aufgefallen, ich denke, das hängt davon ab, wie der jeweilige Compiler das Ganze handlet.

Am Besten beides ausprobieren und vergleichen. :)

zao
30.11.2007, 15:27
bei Dev C++ und Borland trifft das zu was ich sagte, aber da wir ja alle wissen dass du VS user bist xD wird es da wohl anders sein ....

mfg

zao