Wurzelzeichen
-
Hallo
Ich möchte ein Programm mit Wurzelberechnung schreiben
Und möchte wissen ob es dafür in c++ Builder ein extra zeichen gibt?
z.B wie bei Teilen = / , plus und minus + -.Mfg
Kaster Master
-
Hallo
siehe die Funktion sqrt() aus math.h
einfach mal in der BCB-Hilfe danach suchen.bis bald
akari
-
Könntest du mir erklären wie das Funktioniert?
Die Suchfunktion funktioniert bei mir nicht.Das Programm soll auf Kopfdruck die Wurzel ausrechnen
void __fastcall TForm1::Button1Click(TObject *Sender) { Eingabe1 = StrToInt (Edit1->Text); Ergebnis = Eingabe1 //Wurzelziehen Label1->Caption = "Ergebnis:" + String (Ergebnis); }
Bitte einfach erklären kenne mich nicht so gut mit C++ aus.
Mfg
Kaster Master
-
Hallo
bitte schau doch mal in BCB-Hilfe, denn dann hättest du das auch selber hinbekommen :
#include <math.h> ... int Eingabe1 = StrToInt (Edit1->Text); int Ergebnis = sqrt(Eingabe1); //Wurzelziehen Label1->Caption = "Ergebnis:" + IntToStr (Ergebnis);
Beachte, das sqrt() auf float-Typen ausgelegt ist, mit int-Typen wird das Ergebnis abgerundet
bis bald
akari
-
Es geht noch nicht da kommt in math.h auch noch Fehler:
extern "C" {
Hat fehler: declaration termated incorrectly.
Linkage specification not allowedUnd:
int Ergebnis = sqrt(Eingabe1) //Wuzelziehen
Fehler:
Call of nonfunctionWas ist falsch?
MFG
Kaster Master
-
Akaris Code funktioniert einwandfrei. Es muss also bei dir an etwas anderem liegen.
-
Ich habe ihn so eigegeben ist das richtig?
void __fastcall TForm1::Button1Click(TObject *Sender) { #include<math.h> ... int Eingabe1 = StrToInt (Edit1->Text); int Ergebnis = sqrt(Eingabe1) //Wuzelziehen Label1->Caption = "Ergebnis:" + String (Ergebnis); }
-
Hallo
du solltest dich noch mit den Grundlagen von C++ beschäftigen. Dann dann wüßtest du, das #include<math.h> nach ganz oben zu den anderen includes gehört (z.b. include <vcl.h>). Um die Trennung zu Verdeutlichen, habe ich die die drei Punkte danach gemacht. Diese sollen im Programm dann nicht mehr auftauchen.
bis bald
akari
-
Vielen dank für die Hilfe es funktioniert jetzt.
-
Denk doch Mal drüber nach, man muss ja etwas einbinden bevor das eigentliche Programm losgeht und initialisiert wird. Deshalb muss das include über dem eigentlichen Programm stehen da es sich bei includes ja um Header handelt und diese immer über dem Programm stehen. Die Punkte ergeben auch keinen Sinn. Also der gesamte Quellcode muss so ausssehen, wenn du nur den einen Button und die Edit Felder hast.
#include <vcl\vcl.h> #pragma hdrstop #include <math.h> #include "Unit1.h" //--------------------------------------------------------------------------- #pragma resource "*.dfm" //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if(Edit1->Text=="" || Edit1->Text=="0") { Application->MessageBox("Ungültige Eingabe","Fehler",0+16); } else { int Eingabe1 = StrToInt (Edit1->Text); float Ergebnis = sqrt(Eingabe1); //Wuzelziehen Label1->Caption = "Ergebnis:" + FloatToStrF(Ergebnis,ffNumber,8,2); } }
Erstell ein neues Projekt mach dort ein Label ein Edit und ein Buttonfeld und kopiere den oberen Quellcode ein. Dann sollte es funktionieren. Aber lass den Builder die Funktionen für die FormCreate Mehtode und Button Click Mehtode erstellen, da es sonst zu 10 Zugriffsverletzungen kommt und dein Builder abstürzt.
PS: Ich habe das Mal mit ner float Variable gemacht, die auf 2 Stellen rundet.
Außerdem fängt dieses Programm auch Eingaben von 0 oder nichts ab, da es sonst zu einem Absturz kommen würde.Ich hätte eine Frage an die anderen, was bewirkt die Befehlszeile
#pragma hdrstop?
-
Hm irgendwie hat der Server nicht reagiert und ich die Antwort dreimal gesendet.
Naja so kommt man auch auf seine BeiträgeGruß Alex
-
Hallo
#pragma hdrstop beendet die Liste der vorkompilierten Header-Dateien. Durch die Verwendung vorkompilierter Header wird die Kompilierung beschleunigt. Andererseits
benötigen diese aber relativ viel Plattenplatz. Wenn man alle Include-Anweisungen vor diesem Pragma einfügt, kann man die Kompilationszeit reduzieren.
Du kannst auch mal auf hdrstop klicken und dann F1 drücken.Gruß Alex
-
siehe oben
Gruß Alex
-
Dreimal muss ich es auch nicht wissen, einmal reicht, danke!