int wert einer doubel-Variable zuweisen um daraus die Wurzel zu ziehen
-
Hallo
Ich bin dabei im Selbststudium etwas über C++ zu lernen. Im moment hänge ich leider total fest. Ich bin an einer Aufgabe der einen int wert einliest und diesem einen doubel wert zuweisen muss dmait ich die Quadratwurzel daraus ziehen kann. Ich muss gestehen das ich damit im moment etwas überfordert bin und nicht weiter weis. Kann mir jemand von Euch dabei helfen ? Es geht mir hierbei nicht nur um die Lösung sondern vielmehr warum bzw. wie ich es machen muss....ich möchte den Lösungsweg verstehen. Vielen Dank schon mal im voraus für eventuelle Hilfestellungen.
Hier mein Beispiel aus dem Buch bei dem ich den int wert (hier n) einer double Variable zuweisen muss um daraus die Quadratwurzel zu ziehen.
int main() { cout << "Geben Sie einen Wert ein: "; int n; cin >> n; cout << "n == " << n << "\nn+1 == " << n+1 << "\ndreimal n == " << 3*n << "\nzweimal n == " << n+n << "\nn zum Quadrat == " << n*n << "\nHaelfte von n == " << n/2 << "\nWurzel von n == " << sqrt(n) << endl; // ein anderer Name für Zeilenumbruch ("end of line") }Mir ist klar das ich einfach int durch double erstezen kann, aber in meinem Buch wird explizit verlangt n einer double Variablen zuzuweisen um daraus die Quadratwurzel ziehen zu können.
-
Was für ein
sqrtmeinst Du denn? Ich sehe bei dir gar keine#includes und auch keine using-Deklarationen/Direktiven.
-
krümelkacker schrieb:
Was für ein
sqrtmeinst Du denn? Ich sehe bei dir gar keine#includes und auch keine using-Deklarationen/Direktiven.#include "std_lib_facilties.h"Darin ist laut meinem Lernbuch alles enthalten. Erst in späterem Kapitel kommen nähere Erklärungen zu den #include und using direktiven.
#include "std_lib_facilties.h"enthält alle nötigen direktiven die ich bis zum Kapitel 6 brauche. Folgendes ist darin enthalten.
#include <iostream> #include <string> #include <vector> #include <algorithm> #include <cmath> using namespace std; inline void keep_window_open() { char ch; cin>>ch;}
-
Da hast du die Aufgabe falsch vertanden.
Du sollst da natürlich auch eine double-Variable nutzen.
-
Da gibt's eigentlich keinen großen Lösungsweg, und ich tu mich auch schwer, da nur ne halbe Lösung zu verraten. Also:
double d = n; // Dann benutze sqrt(d)Alternativ kannst du auch n nach double casten:
cout << sqrt(static_cast<double>(n));Das Problem, in das du läufst, ist, dass sqrt drei Varianten hat:
float sqrt(float); double sqrt(double); long double sqrt(long double);...und der Compiler nicht weiß, welche du meinst, wenn du einen int übergibst. Wobei es Compiler gibt, die eine Default-Variante (üblicherweise die mit double) auswählen, beispielsweise gcc.
-
Ad aCTa schrieb:
Da hast du die Aufgabe falsch vertanden.
Du sollst da natürlich auch eine double-Variable nutzen.Das Original war so:
int main() { cout << "Geben Sie einen Wert ein: "; double n; cin >> n; cout << "n == " << n << "\nn+1 == " << n+1 << "\ndreimal n == " << 3*n << "\nzweimal n == " << n+n << "\nn zum Quadrat == " << n*n << "\nHaelfte von n == " << n/2 << "\nWurzel von n == " << sqrt(n) << endl; // ein anderer Name für Zeilenumbruch ("end of line") }Die Aufgabe dazu lautet wie folgt:
Führen sie das obige kleine Programm aus. ändern Sie es anschliessend so, dass es einen int-Wert anstelle eines double-Wertes einliest. Beachten Sie das sqrt() nicht für int-Werte definiert ist; weisen sie also n einer doble-Variablen zu und ziehen Sie daraus die Quadratwurzel.
Ist damit nicht gemeint double durch int zu ersetzen und anschliessen n einer double-Variablen zuzuweisen damit sqrt() daraus die Wurzel ziehen kann ? Wenn ja wie weise ich den n einer double-Variablen zu ?
Vieleicht seh ich auch einfach den Wald vor lauter Bäume nicht mehr

-
Beachten Sie das sqrt() nicht für int-Werte definiert ist; weisen sie also n einer doble-Variablen zu und ziehen Sie daraus die Quadratwurzel.
Resultiert für mich in:
cout << "Geben Sie einen Wert ein: "; int n; cin >> n; double d = n; cout << "n == " << n << "\nn+1 == " << n+1 << "\ndreimal n == " << 3*n << "\nzweimal n == " << n+n << "\nn zum Quadrat == " << n*n << "\nHaelfte von n == " << n/2 << "\nWurzel von n == " << sqrt(d) << endl; // ein anderer Name für Zeilenumbruch ("end of line") }MfG SideWinder
-
SideWinder schrieb:
Beachten Sie das sqrt() nicht für int-Werte definiert ist; weisen sie also n einer doble-Variablen zu und ziehen Sie daraus die Quadratwurzel.
Resultiert für mich in:
cout << "Geben Sie einen Wert ein: "; int n; cin >> n; double d = n; cout << "n == " << n << "\nn+1 == " << n+1 << "\ndreimal n == " << 3*n << "\nzweimal n == " << n+n << "\nn zum Quadrat == " << n*n << "\nHaelfte von n == " << n/2 << "\nWurzel von n == " << sqrt(d) << endl; // ein anderer Name für Zeilenumbruch ("end of line") }MfG SideWinder
Perfekt ! Vielen Dank ! Mein Fehler in den vorhergehenden Versuchen war das ich
double d = n;vor
cin >> n;gesetzt hatte.
Besten Dank noch einmal Euch allen !