Wertübergabe während Funktion arbeitet
-
@joules sagte in Wertübergabe während Funktion arbeitet:
Ich glaube ich brauche dafür Zeiger,
oder Referenzen.
double calcseries(int n, double &fakultaet) { .... fakultaet = temp; return temp4;
Die Werte solltest du dann aber vor dem cout Variablen zuweisen.
double e, fak; e = calcseries(n,fak) ;
-
@joules Aber so gehst du, wenn du n von 1 bis 10 laufen lässt, insgesammt 55 mal durch die for- Schleife.
Wenn du die Ausgabe direkt in der for-Schleife machst, bleibt es bei 10 mal
-
@joules: Das, was du möchtest, gibt es im kommenden C++20 Standard und nennt sich Coroutines. ;- )
-
@Th69 sagte in Wertübergabe während Funktion arbeitet:
@joules: Das, was du möchtest, gibt es im kommenden C++20 Standard und nennt sich Coroutines. ;- )
Man könnte das jetzt auch mit static Variablen verbrechen.
Aber soll man das einem Anfänger antun, der mit Zeigern/Referenzen Probleme hat?
-
@joules Was soll die Funktion denn machen? Alle Eulerzahlen von 1-n berechnen, oder nur eine Eulerzahl berechnen und n-mal aufgerufen werden?
-
@joules sagte in Wertübergabe während Funktion arbeitet:
möchte ich während meine Funktion hochzählt, dass sie Werte übergibt
Du musst dir den aktuellen Zustand irgendwo merken. Dazu kann man in C++ Klassen verwenden, deren Instanzen wie Funktionen aufgrerufen werden können.
#include <iostream> class Generator { public: int operator()() { i = i+1; // Ergebnis berechnen und speichern return i; // Ergabnis abliefern } private: int i = 0; }; int main() { Generator g; int j; while( ( j = g() ) < 100 ) { std::cout << j << " "; } std::cout << "\n"; }
Deine Funktion ist hier
int operator()()
. Die kann auch Werte entgegennehmen, z.B.int operator()( int x )
-
Danke für die zahlreiche Hilfe! Ich habe mich jetzt einwenig mit Pointer und Zeigern auseinander gesetzt. Das kam dabei raus.
#include <iostream> using namespace std; double calc(int n) { double f = 1; int g = 1; double* iptr; double iptr2; while (g <= n) { f = f * g; iptr = &f; iptr2 = *iptr; cout << "factorial(" << g << ")= " << iptr2 << endl; g++; } return f; } int main(void) { double result; int n; cout << "Enter your factorial: "; cin >> n; result = calc(n); cout << "factorial of entry is: " << result << endl; }
Das Programm funktioniert jetzt so wie ich wollte. Gerne könnte ihr mir Verbesserungsvorschläge schicken.
Im Programm gibt man eine Zahl n ein, welche dann die Fakultät der Eingabe Schritt für Schritt berechnet.
-
Und den Pointer und den Nichtpointer mit ptr im Namen brauchst du warum?
double calc(int n) { double f = 1; int g = 1; while (g <= n) { f = f * g; cout << "factorial(" << g << ")= " << f << endl; g++; } return f; }
-
@joules WT (sorry:) F?
#include <iostream> auto fac(unsigned n) { long long unsigned result{ 1 }; for (unsigned i{ 1 }; i <= n; ++i) { result *= i; std::cout << "fac(" << i << ") = " << result << '\n'; } return result; } int main() { std::cout << "Enter your number: "; unsigned n; std::cin >> n; auto result{ fac(n) }; std::cout << "factorial of " << n << " is: " << result << "\n\n"; }
-
Ohje! Ich habe mich in der Aufgabe geirrt. Tut mir sehr leid.
-
@joules sagte in Wertübergabe während Funktion arbeitet:
Ohje! Ich habe mich in der Aufgabe geirrt. Tut mir sehr leid.
???