C++, Wurzeln ziehen?

Hola.

Ich hab mich mal wieder halb tot gegoogelt und hab natürlich nix gefunden, sonst würd ich euch nich wieder nerven.

Also mein problem:

Um in C++ zu rechnen gibts ja die normalen rechenarten, +, -, /, * etc.

Wie kann ich Wurzeln ziehen??

Wäre nämlich sher hilfreich, z.B. weil ich ein kleines Prog zum Thema Pytagoras schreiben wollte. Nix aufregendes, Anfängerkram halt. Ich weiss, ich soll mir ein Buch kaufen...mach ich auch bald...
 
Auch wenn ich mich mit C++ überhaupt nicht auskenne, gehe ich davon aus, dass der befehl wie folgt lautet:


sqrt($int)

give it a try...
 
kann sein das es sqrt () gibt't, aber das ist dann nur für quadradwurzeln (sollte ja eigentlich für deine zwecke ausreichen). ansonsten kannst du pow (basis, exponent) nehmen.

bsp: 2. wurzel aus 4:
pow (4, 0.5);

mfg,
pacman
 
Und wie geb ich das dann aus? mit

Code:
cout<<"Die wurzel aus 16 ist:"<<pow(16, 0.5)<<endl;

oder wie?

und was bedeutet eigentlich das 0.5 ??
 
4 hoch 1/2

Normale Exponentialrechnung...die n-te Wurzel aus einer Zahl berechnet sich durch:

Zahl hoch 1/n

Deine Ausgabefunktion sieht gut aus.
 
Ok...

und wie mach ich das mit pow() wenn ich variablen benutzen will?

int a;
cin>>a;
pow(a, 0.5)
etc...
geht nicht...

Also, wie soll ichs machen???

Und was tut das "0.5" im pow() ?????
 
Du solltest die Fehlermeldung mit hin schreiben.
Ein Fehler ist wahrscheinlich die deklaration von a als int. Du bekommst ja ne ne double aus der Wurzel.

Das 0.5 bei Pow ist einfach a hoch 1/2
Die 2te Wurzel aus a ist das selbe wie a hoch 1/2
 
hmmm, pow ist eigentlich so überladen, dass es auch mit int funktionieren muss. kann es sein, dass du einfach das semikolon vergessen hast. im beispiel fehlt's nämlich.

mfg,
pacman
 
Die Fehlermaldung müsst ich komplett abtippen, weil ich auf nem anderen rechner (mit Linux) programmiere

Aber mit double gehts, Danke!
 
Aber die Probs hören trotzdem nicht auf!

Ich hab jetzt sqrt() anstatt pow() genommen, weil das angeblich auch floats kann, also kommazahlen.

Aber das hier klappt trotzdem nicht:

Code:
/* Pytagoras.cpp */

#include <iotream>
using namespace std;
int main()
float a;
float b;
float c;
cout<<"Kathete a:";
cin>>a;
cout<<"Kathete b:";
cin>>b;
c=(a*a)+(b*b);
cout<<"Hypotenuse c: "<<sqrt(c)<<endl;
return 0;
}

Das Programm funzt zwar, aber es lässt mich die zweite kathete (b) nicht einlesen.

Es kommt immer:

Kathete a: (hier kann man was eingeben)
Kathete b:Hypotenuse c: (irgendein ergebnis)


Wo ist der Fehler???????
 
der fehler liegt nicht im code, sondern in der eingabe. ich nehme mal an, dass du statt dem punke (.) ein komma (,) für die eingabe der kommazahl benutzt hast. also schreib einfach statt:
3,4
3.4
oder so ;)

solche fehleingaben würde man normalerweise im programm abfangen, aber das wäre wohl in diesem fall mit kanonen auf spatzen geschossen

PS: double sind auch kommazahlen ;)

mfg,
pacman
 
an pacman:

Danke, funktioniert!!!

Könntest du mir vielleicht trotzdem sagen wie ich die abfangen kann? Also so das ich halt auch Kommas statt punkte verwenden kann?
 
Die internationale Schreibweise für Kommazahlen ist einfach mit Punkt. Das musst du dir angewöhnen. Wenn du später mal ein anderes Programm schreibst, in dem du Kommazahlen verwendest musst du die auch im Quellcode richtig schreiben.
 
Yo ok...

Also, um nicht noch nen thread zu öffnen stell ich hier gleich noch ne andere Frage:

Wie kann ich es machen, das das Programm nochmal von vorne abläuft, also praktisch die funktion main() wiederholt wird??? Wäre für ein prog das ich grad mach sehr praktisch....
 
Und wie soll ich die Funktion nennen?

int, float, char, oder wie???

Und dann: wie ruf ich sie wieder auf???

Kann ich nicht main() nochmal aufrufen?
 
1. die main kann nur einmal aufgerufen werden
2. man kann eine funktion weder int, float oder char nennen. das sind reservierte schlüsselwörter die nicht zur namensdeklarierung benutzt werden.
3. kauf die bitte ein c++ buch oder hol die ein vernünftiges e-book. wenn man bei so grundsätzlichen sachen wie funktionen oder schleifen nachfragen muss, bringt es einfach nichts so weiter zu machen. so lernst du nie richtig coden.

das sollte für einen soliden anfang reichen:
c++ tut
ich hab mal kurz drübergeschaut. es ist kein perfektes c++ und auch nicht so sauber gecodet, aber für den anfänger sollte es reichen. wenn du das durch hast, kannst du schon einiges.

mfg,
pacman
 
An pacman:

Ey Sorry aber ich hab echt schon funktionen als floats und so gesehen, und ich weiss das die funzen. Oder du meinst was anderes als ich, glaub ich aber net. Also ich hab ja gesagt das ich schwer geneigt bin mir ein buch zu kaufen, aber bevor ich das tue wärs schon recht hilfreich wenn du mir einfach ne Antwort auf meine Frage geben würdest, du bist nämlich einer der wenigen hier die sich auskennen und nich nur rumposen....
 
zur funktion als float, int usw.
das was du meinst ist der rückgabetyp den man vor den funktionsnamen schreibt
der kann alles mögliche sein
void benutzt man wenn die funktion nichts zurückgeben soll (das würde ich in deinem beispiel machen)
die main funktion wird nur einmal aufgerufen (beim starten des programms)
wenn du eine funktion mehrmals aufrufen willst musst du schon eine eigene schreiben und diese dann in der main funktion beliebig oft aufrufen

ansonsten halt dich mal an pacman und les mal n tut oder n buch
wie man ne funktion schreibt gehört zu den absoluten grundlagen
und die sollte man kennen wenn man programmiert
 
Für so was nimmt man ne do while Funktion

char wieder;

do
{
berechnung;
cout<<"Wollen Sie das Programm wiederholen? (j/n)";
cin>>wieder;
}
while(wieder == 'j' || wieder == 'J');

Alles in die main schreiben

die 2 Striche bei while machst du mit Alt gr und der Taste neben dem Y. Das ist ein logisches Oder.
 
Zurück
Oben