• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

Problem bei C++

ApF3LsAfT

Hobby-Spieler/in
Registriert
22.04.2004
Beiträge
881
Reaktionspunkte
1
Also hier mein Quelltext.Es soll das Kapital nch 5 Jahen ausgerechnet werden. Mein C++ Programm (Borland 6) findet aber massig Fehler... Es müsste aber richtig sein, da wir es in der Schule so bei einer Präsentation deses Programms gezeigt bekommen haben (schwere aussprache :ugly: )
könnt ihr mir sagen was ich falsch gemacht habe?

//---------------------------------------------------------------------------

#include <iostream.h>
#include <conio.h>
#include <iomanip.h>

double Zins;
double Kapital;
double Jahr1;
double Jahr2;
double Jahr3;
double Jahr4;
double Jahr5;
//---------------------------------------------------------------------------
double Berechnung(double Kapi, double Zinsi){
double Erg=(Kapital*(Kapital/100)+1);
return Erg;
}

Jahr1=Berechnung(Kapital,Zins);
Jahr2=Berechnung(Jahr1,Zins);
Jahr3=Berechnung(Jahr2,Zins);
Jahr4=Berechnung(Jahr3,Zins);
Jahr5=Berechnung(Jahr4,Zins);


void Ausgabe( int J, double A, double B)
{
cout <<"Im "<<J<<". Jahr: "<<A<<"EUR"<<A-B<<"EUR Gewinn"<<endl;
}

Ausgabe(1,Jahr1,Kapital);
Ausgabe(2,Jahr2,Kapital);
Ausgabe(3,Jahr3,Kapital);
Ausgabe(4,Jahr4,Kapital);
Ausgabe(5,Jahr5,Kapital);


void Eingabe(double &K, double &Z)
{
cout <<"Startkapital: ";
cin >>K;
cout <<"Zinssatz: ";
cin >>Z;
}

Eingabe(Kapital, Zins);

//------------------------------------------------
 
ApF3LsAfT am 26.09.2004 12:48 schrieb:
double Berechnung(double Kapi, double Zinsi){
double Erg=(Kapital*(Kapital/100)+1);
return Erg;
}
Das hier sieht schonmal recht falsch aus ;)
1. Solltest du, wenn dus schon übergibts, "Kapi" und "Zinsi" bei der Berechnung auch benutzen.
2. Der Zinssatz wird gar nicht beachtet hier, wenn ich mich nicht irre!?


Jahr1=Berechnung(Kapital,Zins);
Jahr2=Berechnung(Jahr1,Zins);
Jahr3=Berechnung(Jahr2,Zins);
Jahr4=Berechnung(Jahr3,Zins);
Jahr5=Berechnung(Jahr4,Zins);
Das kommt doch etwas früh, "Kapital" und "Zins" enthalten doch noch gar keine Werte. Also erst die Eingabe vornehmen lassen und dann berechnen. Auch die Ausgabe muss natürlich nach der Eingabe und Berechnung passieren.

PS: Braucht man bei c++ keine main-Methode? C++ hab ich schon lang nicht mehr gemacht, deshalb bin ich mir da nicht sicher :o

EDIT: Die Compilerfehlermeldungen würden helfen, dann muss ich nicht so genau suchen ;)
 
DJ_of_Borg am 26.09.2004 13:09 schrieb:
EDIT: Die Compilerfehlermeldungen würden helfen, dann muss ich nicht so genau suchen ;)
Du hast es so gewollt ;-) :
[C++ Fehler] Unit1.cpp(28): E2303 Typname erwartet
[C++ Fehler] Unit1.cpp(28): E2238 Bezeichner 'Eingabe(double &,double &)' mehrfach deklariert
[C++ Fehler] Unit1.cpp(21): E2344 'Eingabe(double &,double &)' bereits deklariert
[C++ Fehler] Unit1.cpp(28): E2063 Unzulässige Initialisierung
[C++ Fehler] Unit1.cpp(28): E2293 ) erwartet
[C++ Fehler] Unit1.cpp(31): E2303 Typname erwartet
[C++ Fehler] Unit1.cpp(31): E2238 Bezeichner 'Jahr2' mehrfach deklariert
[C++ Fehler] Unit1.cpp(10): E2344 'Jahr2' bereits deklariert
[C++ Fehler] Unit1.cpp(32): E2303 Typname erwartet
[C++ Fehler] Unit1.cpp(32): E2238 Bezeichner 'Jahr3' mehrfach deklariert
[C++ Fehler] Unit1.cpp(11): E2344 'Jahr3' bereits deklariert
[C++ Fehler] Unit1.cpp(33): E2303 Typname erwartet
[C++ Fehler] Unit1.cpp(33): E2238 Bezeichner 'Jahr4' mehrfach deklariert
[C++ Fehler] Unit1.cpp(12): E2344 'Jahr4' bereits deklariert
[C++ Fehler] Unit1.cpp(34): E2303 Typname erwartet
[C++ Fehler] Unit1.cpp(34): E2238 Bezeichner 'Jahr5' mehrfach deklariert
[C++ Fehler] Unit1.cpp(13): E2344 'Jahr5' bereits deklariert
[C++ Fehler] Unit1.cpp(41): E2303 Typname erwartet
[C++ Fehler] Unit1.cpp(41): E2238 Bezeichner 'Ausgabe(int,double,double)' mehrfach deklariert
[C++ Fehler] _ios.c(36): E2344 'Ausgabe(int,double,double)' bereits deklariert
[C++ Fehler] Unit1.cpp(41): E2063 Unzulässige Initialisierung
[C++ Fehler] Unit1.cpp(41): E2293 ) erwartet
[C++ Fehler] Unit1.cpp(42): E2303 Typname erwartet
[C++ Fehler] Unit1.cpp(42): E2238 Bezeichner 'Ausgabe(int,double,double)' mehrfach deklariert
[C++ Fehler] _ostream.c(41): E2344 'Ausgabe(int,double,double)' bereits deklariert
[C++ Fehler] _ostream.c(41): E2228 Zu viele Fehlermeldungen oder Warnungen
 
Autsch :S *g*
Hm, da ich nicht weiß, was welche Zeile ist, isses nicht viel einfacher geworden. Aber: wenn ich mich richtig erinnere, muss man doch in c++ jede einzelne Funktion erstmal deklarieren (quasi wie die Variablen). Üblicherweise in einer .h-Datei (oder hab nur ich das so gemacht? Egal^^), sollte aber auch so gehen. Müsste dann wohl so aussehen:

#include <iostream.h>
#include <conio.h>
#include <iomanip.h>

double Zins;
double Kapital;
double Jahr1;
double Jahr2;
double Jahr3;
double Jahr4;
double Jahr5;

double Berechnung(double Kap, double Zins);
void Ausgabe (int j, double a, double b);
void Eingabe (double &k, double &z); // <= Pointer sind nicht gerade meine spezialität als Java-Progger, der c++ bisher nur am Rande gemacht hat^^

int main(){
Eingabe(Kapital, Zins);
//Dann Berechnung und Ausgabe wie gehabt
}

double Berechnung(double Kapi, double Zinsi){
double Erg=(Kapital*(Kapital/100)+1);
return Erg;
}
//wie schon vorher angedeutet entsprechende Variablen nutzen
//anschliessend die ganzen anderen Funktionen

Probier das mal, wie gesagt, c++ ist nicht mein spezialgebiet und meinen Compiler hab ich grad net installiert.
 
hilfe, gibts hier keine code tags oder ähnliches, um die formatierung zu retten? aber wenn ich nicht schiele, dann frage ich mich zum einen:

wann erklärt euch der lehrer endlich arrays und schleifen? schülern derart üble angewohnheiten beizubringen grenzt ja schon an fahrlässigkeit.

übersehe ich klammern, oder steht die hälfte von deinem code wirklich vollkommen losgelöst mitten in der pampa? wo ist main? wie sollte das jemals funktionieren?

#include <iostream.h>

double Berechnung(double Kapi, double Zinsi) {
return (Kapi*(Kapi/100)+1); //macht trotzdem keinen sinn, wo ist zinsi?
//ich rate mal:
return Kapi + (Kapi * Zinsi/100);
}

void Ausgabe( int J, double A, double B) {
cout <<"Im "<<J<<". Jahr: "<<A<<"EUR"<<A-B<<"EUR Gewinn"<<endl;
}

void Eingabe(double &K, double &Z) {
cout <<"Startkapital: ";
cin >>K;
cout <<"Zinssatz: ";
cin >>Z;
}

int main(int argc, char** argv) {
double Zins, Jahr[6];
Eingabe(Jahr[0], Zins);
for (int i=1; i<6; ) {
Jahr=Berechnung(Jahr[i-1], Zins);
Ausgabe(i, Jahr, Jahr[0]);
}
}


arg.. hier funktioniert ja mal wirklich kein einiger der üblichen tags. welcher wahnsinnige macht denn bitte so ein forum ohne tags um code lesbar darzustellen? *knurr*
 
DJ_of_Borg am 26.09.2004 13:49 schrieb:
void Eingabe (double &k, double &z); // <= Pointer sind nicht gerade meine spezialität als Java-Progger, der c++ bisher nur am Rande gemacht hat^^

falls du mal wieder in die verlegenheit kommst mit c++ arbeiten zu müssen:

mit typ &name wird kein pointer, sondern eine referenz deklariert, was nur minimal verwirrend ist, weil man mit &name die adresse (sprich pointer) auf eine variable bekommt und pointer mit typ *name deklariert und mit *name dereferenziert. und der unterschied? technisch gar keiner, aber referenzen werden wie die variable selbst behandelt, sprich:

void bla(int* x) {*x=10;}
verglichen mit
void bla (int& x) {x=10;}

ist genau das gleiche, nur beim zweiten kann man wenns dumm läuft übersehen, daß die funktionen nebeneffekte hat und ihre parameter verändert.
 
Also ich weiß nicht wozu du die 2. und den 3. Header brauchst ich denke iostream.h würde ausreichen. Also ich denke so müüsste es gehen. Konnte es leider nicht ausprobieren, da mein Compiler im A**** ist:

// Code Anfang

#include <iostream.h>
#include <conio.h>
#include <iomanip.h>

double Berechnung(double Kapi, double Zinsi);
void Ausgabe( int J, double A, double B);
void Eingabe(double &K, double &Z);

int main()
{

double Zins;
double Kapital;
double Jahr1;
double Jahr2;
double Jahr3;
double Jahr4;
double Jahr5;

Eingabe(Kapital, Zins);

Jahr1=Berechnung(Kapital,Zins);
Jahr2=Berechnung(Jahr1,Zins);
Jahr3=Berechnung(Jahr2,Zins);
Jahr4=Berechnung(Jahr3,Zins);
Jahr5=Berechnung(Jahr4,Zins);


Ausgabe(1,Jahr1,Kapital);
Ausgabe(2,Jahr2,Kapital);
Ausgabe(3,Jahr3,Kapital);
Ausgabe(4,Jahr4,Kapital);
Ausgabe(5,Jahr5,Kapital);

return 0;
}
//---------------------------------------------------------------------------
double Berechnung(double Kapi, double Zinsi)
{
double Erg = (Kapi + Kapi*(Zinso/100);
return Erg;
}

//---------------------------------------------------------------------------
void Ausgabe( int J, double A, double B)
{
cout <<"Im "<<J<<". Jahr: "<<A<<"EUR"<<A-B<<"EUR Gewinn"<<endl;
}

//---------------------------------------------------------------------------
void Eingabe(double &K, double &Z)
{
cout <<"Startkapital: ";
cin >>K;
cout <<"Zinssatz: ";
cin >>Z;
}

// Code Ende

Ich hab jetzt eigentlich nur deinen Code übernommen und die offensichtlichen Fehler rausgenommen, wenn du noch andere gemacht hast, sind diese noch im Code.
 
Zurück