Ich hab folgendes Programm für Info geschrieben es soll den arccot über eine Summenformel berchnen (Formel s.h. Bild). das Programm wird zwar Problemlos kompiliert und gibt auch bei beträgen größer 5 aus das der Betrag zu groß ist, aber wenn ich z.b. 0.5 eingebe passiert einfach garnichts mehr ich vermute das ich irgendwo ne endlosschleife hab weeis aber nicht wo. wär cool wenn mir jemand helfen könnt.
mfg Gobo939
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
int main()
{
float x,a;
int k;
double fac;
double zaehler,nenner,epsilon;
double glied_davor,glied_aktuell,summe;
const double pi = 3.14159265;
bool epsilon_unterschritten;
cout<< "Dieses Programm dient dem berechnen der Arcuscotangens Funktion y=f(x)=arccot(x)"<<endl;
cout<< "================================"<<endl;
cout<< "fuer Eingaben von |x|<1";
cout<< "Bitte geben sie einen Wert x ein"<<endl;
cin>> x;
cout <<"Bitte geben sie ein Abbruchkriterium Epsilon ein\n";
cout <<"Hinweis: Wenn Epsilon groesser als 0.000001 ist wird es auf 0.0000001 festgesetzt\n";
cin >> epsilon;
if (epsilon > 0.000001) // Festlegen des Abbruchkriteriums
{ epsilon = 0.0000001;}
if((x>1)||(-x>1))//abfrage ob Betrag x größer 1
{
cout<< "Der Arcuscotangens ist für diesen x Wert nicht definiert."<<endl;
cout<< "Bitte starten sie das Programm erneut und geben sie einen anderen Wert für x ein"<<endl;
return 1;
}
else
{
k=1;
fac = -1;
zaehler=x*x*x;
nenner=3;
glied_davor=zaehler/nenner;
summe=pi/2-x+glied_davor;
epsilon_unterschritten=false;
k++;
do
{
zaehler=zaehler*(-(x*x));
nenner=(2*k+1);
glied_aktuell=zaehler/nenner;
k++;
if(glied_davor-glied_aktuell<=epsilon)
{
epsilon_unterschritten == true;
cout << "Ergebnis :" << summe << endl;
cout <<"Anzahl der Durchläufe k = (" << k << ")\n";
cout <<"Kontrolle durch <cmath> mit der Formel: (pi/2)-arctan(x)\n";
cout <<"arccot(x) =" << (pi/2)-atan(x) << endl;
system("pause");
}
else
{
summe = summe + fac*glied_aktuell;
glied_davor = glied_aktuell;
fac=fac*-1;
}
}
while(k<=20);
cout << "\nErgebnis:" << endl;
cout << "==============" << endl;
cout << "arccot(x) = " << summe << endl;
cout << "(Anzahl der Durchläufe in der Summenformel: k = " << k << " )" << endl;
cout <<"Kontrolle durch <cmath> mit der Formel: (pi/2)-arctan(x)\n";
cout <<"arccot(x) =" << (pi/2)-atan(x) << endl;
}
system("PAUSE");
}
mfg Gobo939
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
int main()
{
float x,a;
int k;
double fac;
double zaehler,nenner,epsilon;
double glied_davor,glied_aktuell,summe;
const double pi = 3.14159265;
bool epsilon_unterschritten;
cout<< "Dieses Programm dient dem berechnen der Arcuscotangens Funktion y=f(x)=arccot(x)"<<endl;
cout<< "================================"<<endl;
cout<< "fuer Eingaben von |x|<1";
cout<< "Bitte geben sie einen Wert x ein"<<endl;
cin>> x;
cout <<"Bitte geben sie ein Abbruchkriterium Epsilon ein\n";
cout <<"Hinweis: Wenn Epsilon groesser als 0.000001 ist wird es auf 0.0000001 festgesetzt\n";
cin >> epsilon;
if (epsilon > 0.000001) // Festlegen des Abbruchkriteriums
{ epsilon = 0.0000001;}
if((x>1)||(-x>1))//abfrage ob Betrag x größer 1
{
cout<< "Der Arcuscotangens ist für diesen x Wert nicht definiert."<<endl;
cout<< "Bitte starten sie das Programm erneut und geben sie einen anderen Wert für x ein"<<endl;
return 1;
}
else
{
k=1;
fac = -1;
zaehler=x*x*x;
nenner=3;
glied_davor=zaehler/nenner;
summe=pi/2-x+glied_davor;
epsilon_unterschritten=false;
k++;
do
{
zaehler=zaehler*(-(x*x));
nenner=(2*k+1);
glied_aktuell=zaehler/nenner;
k++;
if(glied_davor-glied_aktuell<=epsilon)
{
epsilon_unterschritten == true;
cout << "Ergebnis :" << summe << endl;
cout <<"Anzahl der Durchläufe k = (" << k << ")\n";
cout <<"Kontrolle durch <cmath> mit der Formel: (pi/2)-arctan(x)\n";
cout <<"arccot(x) =" << (pi/2)-atan(x) << endl;
system("pause");
}
else
{
summe = summe + fac*glied_aktuell;
glied_davor = glied_aktuell;
fac=fac*-1;
}
}
while(k<=20);
cout << "\nErgebnis:" << endl;
cout << "==============" << endl;
cout << "arccot(x) = " << summe << endl;
cout << "(Anzahl der Durchläufe in der Summenformel: k = " << k << " )" << endl;
cout <<"Kontrolle durch <cmath> mit der Formel: (pi/2)-arctan(x)\n";
cout <<"arccot(x) =" << (pi/2)-atan(x) << endl;
}
system("PAUSE");
}
Zuletzt bearbeitet: