Potenzen mit CMATH, aber wie?
-
grüßt euch, ich habe erst vor einer woche mit c++ angefangen und kenne mich daher noch sehr schlecht aus..aber ich bin gerade dabei ein zinsprogramm zu schreiben und dafür muss ich eine Potenz verwenden, also erstmal mein Code bis jetzt:
//--------------------------------------------------------------------------- #include <vcl\vcl.h> #pragma hdrstop #include "Unit1.h" #include "CMATH.H" //--------------------------------------------------------------------------- #pragma resource "*.dfm" TForm1 *Form1; float Endkapital, Kapital, Prozent, Laufzeit; int Nr; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Nr++; if (Nr == 1) { Kapital = StrToFloat (Edit1->Text); Label1->Caption = "Bitte gebe nun den Prozenzsatz ein:"; Edit1->Text = ""; } if (Nr == 2) { Prozent = StrToFloat (Edit1->Text); Label1->Caption = "Wie lange wollen sie ihre " + String (Kapital) + "EUR anlegen?"; Edit1->Text = ""; } if (Nr == 3) { Laufzeit = StrToFloat (Edit1->Text); Endkapital = Kapital * pow(1+(Prozent/100),Laufzeit); Label1->Caption = "Nach " + String (Laufzeit) + " Jahren haben sie " + String (Endkapital) + "EUR."; Nr = 0 } } //---------------------------------------------------------------------------
Der Fehler lauet: Could not find a match for pow(float,float); und er springt an die folgende stelle: Endkapital = Kapital * pow(1+(Prozent/100),Laufzeit);
jetzt weis ich nicht wo mein fehler liegt, ich vermute mal das ich die cmath nicht richtig included habe? denn auf dem gebiet kenn ich mich nun gar nicht aus..ich hab einfach in google ein bisschen gesucht und bin dann eben auf diese CMATH gestoßen...ich hab die include dateien einfach alle in meinen projektordner kopiert und zu meinem quelltext #include "CMATH.H" geschrieben..
ob das genug war weiß ich leider nicht...ich hoffe ihr koennt mir bei meinem problem helfen....thnx im vorrausbitnets
ach ja: versucht euch bitte so auszudrücken, das ich es auch verstehen kann...
Mod sagt: Bitte Code-Tags verwenden!
-
Es heißt einfach
#include <cmath> ohne das h.
Und danach mußt Du entweder noch using namespace std;
oder statt pow(...) immer std::pow(...)MfG Jester
P.S.: Code-Tags sind was feines.
-
also wenn ich anstatt math.h nur math schreibe, spuckt er mir: unable to open include file...aus
und das andere sagt mir überhaupt nichts sry
was ist usin namespace std; ? wenn ich es so davor setze kommt auch ein errorschreibs doch mal so hin wie ich es im fertigen zustand reinschreiben muesste
wieso klappt es eigentlich nicht wenn ich einfach nur pow(x,y) verwende? die funktion pow ist doch definiert....
bitnets
-
Bei dir steht
#include "CMATH.H"
und das sollte
#include <cmath>
heißen, hat Jester gesagt.
-
//---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop#include "Unit1.h"
#include <CMATH>//---------------------------------------------------------------------------
#pragma resource "*.dfm"
TForm1 *Form1;
float Endkapital, Kapital, Prozent, Laufzeit;
int Nr;
.....
...so hab ich es eingegeben und es kommt: unable to open include file CMATH.h
wie gesagt ich glaube ich habe dieses modul CMATH (oder vielleicht nennt man es auch anders)..falsch installiert,...ich hab nämlich nur diese ganzen files in den ordner kopiert in dem ich mein aktuelles projekt abgespeichert habe...mehr hab ich noch nicht getan
-
#include <cmath>
Was ist an Copy&Paste so schwer?
Wenn du erst vor einer Woche mit C++ angefangen hast, wäre es viel sinnvoller nicht gleich mit der Borland-VCL anzufangen. VCL ist nicht gerade ein Musterbeispiel für gute C++ Programmierung.
Schreib lieber erstmal ein paar Konsolenanwendungen. Und versuch keine globalen Variablen zu nehmen.
-
also cd9000 ich habs jetzt auch ausprobiert <CMATH> kleingeschrieben, es ändert sich trotzdem nix...
was das mit dem VCL betrifft da magst du schon recht habe, um ehrlich zu sein, weiß ich nicht mal wo der unterschied liegt, ich bin einfach in die buchhandlung und habe mir ein anfängerbuch für c++ gekauft, und da fand ich objektorientierte programmierung sehr interessant.es wäre nett wenn mir mal jemand den unterschied zwischen konsole und dem eben genannten, erklären könnte...oder mal ganz allgemein, die verschiedenen "arten" von c++. mit dem neu gewonnenen überblick könnte ich mich dann von einer anderen seite an c++ rannwagen...wie gesagt, bin neu, und ganz verrück aufs coden
-
so ich habs jetzt doch geschafft, dass er auch <cmath> annimmt, es lag an der falschen installation der bin und lib files...egal, mein hauptproblem bleib ja leider:
//--------------------------------------------------------------------------- #include <vcl\vcl.h> #pragma hdrstop #include "Unit1.h" #include <cmath> //--------------------------------------------------------------------------- #pragma resource "*.dfm" TForm1 *Form1; double Endkapital, Kapital, Prozent, Laufzeit; int Nr; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Nr++; if (Nr == 1) { Kapital = StrToFloat (Edit1->Text); Kapital = double(Kapital); Label1->Caption = "Bitte gebe nun den Prozenzsatz ein:"; Edit1->Text = ""; } if (Nr == 2) { Prozent = StrToFloat (Edit1->Text); Prozent = double(Prozent); Label1->Caption = "Wie lange wollen sie ihre " + String (Kapital) + "EUR anlegen?"; Edit1->Text = ""; } if (Nr == 3) { Laufzeit = StrToFloat (Edit1->Text); Laufzeit = double (Laufzeit); Endkapital = Kapital * pow( 1+ (Prozent / 100),Laufzeit); Label1->Caption = "Nach " + String (Laufzeit) + " Jahren haben sie " + String (Endkapital) + "EUR."; Nr = 0; } } //---------------------------------------------------------------------------
FEHLER: Coulnd find a match for pow(double,double) in Zeile 42, also bei dem Befehl: Endkapital = Kapital * pow( 1+ (Prozent / 100),Laufzeit);
was soll ich nun machen?
bitnets
-
Schreib unter das #include <cmath> diese Zeile:
using namespace std;
-
Hi,
Du musst anstatt#include <cmath>
einfach nur:
#include <math.h>
ist ja immerhin Borland
Naja bei mir geht's dann.
-
Das ist dann das, was man als "verschlimmbessern" bezeichnet.
<cmath> ist C++, <math.h> ist C. Wie Programmieren hier C++, also <cmath>!
-
Wobei in cmath von Borland folgendes steht
/* cmath.h Standard C header file wrapper for math.h */ /* * C/C++ Run Time Library - Version 10.0 * * Copyright (c) 1997, 2000 by Inprise Corporation * All Rights Reserved. * */ /* $Revision: 9.0 $ */ #define __USING_CNAME__ #include <math.h> #undef __USING_CNAME__
Also doch wieder math.h