C++ Neuling braucht Hilfe

schlegel

Neuling
Thread Starter
Mitglied seit
26.06.2002
Beiträge
397
Hi,
Also wir sollen bis Freitag 15.12 einen Beleg in Info abgeben.Ich bin zwar mit meinen Programm fertig,aber weiß nicht, wo mein Fehler ist.Er gibt mir immer unendlich aus.Hierist die Aufgabenstellung.
Und hier mein Programm:
#include <iostream>
#include <cmath>
using namespace std;
main ()
{
double x,epsilon,folge1,folge2,ergebnis,differenz,fakultaet1,fakultaet2,fakultaet3,fakultaet4;
int n,a,b;
n=1;
fakultaet1=1;
fakultaet2=1;
fakultaet3=1;
fakultaet4=1;
cout<<" Bitte geben sie ein X-Wert ein";
cin>>x;
cout<<" Bitte geben sie ein Abbruchswert Epsilon ein (muss groesser als 0 sein,je kleiner, destso genauer das Ergebnis)";
cin>>epsilon; //Eingabe Abbruchbedingung
x=sqrt (x*x); //Berechnung des Betrages
do
{
a=n;
b=n+2;
do //Berechnung der Fakultät
{
fakultaet3=fakultaet3*fakultaet1;
fakultaet1=a*(a-1);
a=a-2;
}
while (a>1);
do //Berechnung der Fakultät
{
fakultaet4=fakultaet4*fakultaet2;
fakultaet2=b*(b-1);
b=b-2;
}
while (b>1);
folge1=(pow (x, n))/(fakultaet1); //Berechnung von zi
folge2=(pow (x, n+2))/(fakultaet2); //Berechnung von zi+1
ergebnis=ergebnis+folge1;
cout<<ergebnis;
n=n+2;
differenz=folge2-folge1;
}
while (epsilon<differenz); //Abbruchbedingung
cout << ergebnis;
}

Weiß jemand, wo der Fehler ist? Wäre sehr dankbar.Es gibt zwar die Lösung im Internet, aber ich wollte das selber programmieren.
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Ich hab zwar selber nicht viel Ahnung von C++, aber es wäre wohl hilfreich wenn du sagen würdest was denn nicht funktioniert oder was der Compiler als Fehler ausgibt.

Außerdem solltest du das Programm vielleicht in
Code:
-Tags schreiben, da so die Einrückungen erhalten bleiben.

[CODE]
#include <iostream>
using namespace std;

int main()
{
	cout << "Hallo Welt!" << endl;
	return 0;
}
 
Zuletzt bearbeitet:
Danke schonmal für die Antwort.Also der Compiler (nehme BloodShed) selber bringt keinen Fehler.Das Programm jedoch gibt (für x=5, epsilon=1) 1.#INF1.#INF aus.Rauskommen müsste jedoch mit der Summenformel 74.6133.Ich versteh das einfach nich :(.Ich hab das ganze schon gedanklich durchgerechnet, es kommt auch keine Divison durch null raus und die Werte sind auch nicht extrem groß, dass C++ die nicht verarbeiten kann.
 
Ich hab mir den Code jetzt nicht im Detail angeschaut. Ich bin ehrlich gesagt zu faul, dass in dieser Form zu lesen ;) (hat driver2 schon recht).

An Deiner Stelle würde ich mich mit der Arbeistweise eines Debuggers beschäftigen. Den hat BloodShed IMO AFAIK auch integriert. Mittels des Debuggers kannst du Breakpoints setzen und Dir Zwischenergebnisse ausgeben lassen. Auf diese Weise kannst du Schrittweise überprüfen ob Dein Programm korrekt rechnet und den genauen Befehl oder die Stelle ermitteln, an der der Fehler auftritt. Damit kannst du das Problem dann vermutlich selbst lösen. Versuchs mal.

bye Toc
 
Auch wenns schon zu spät ist und ich den Thread erst jetzt sehe. Dein Beispiel mit 5 und 1.

Der Fehlerfolgen sind fett Makiert:

Code:
#include <iostream>
#include <cmath>

using namespace std;

main ()
{
  double x,epsilon,folge1,folge2,ergebnis,differenz,fakulta et1,fakultaet2,fakultaet3,fakultaet4;
  int n,a,b;
  [B]n=1;[/B]
  fakultaet1=1;
  fakultaet2=1;
  fakultaet3=1;
  fakultaet4=1;
  
  [...]
  
  do
  {
    [B]a=n;[/B] 
    b=n+2;
  do //Berechnung der Fakultät
  {
    fakultaet3=fakultaet3*fakultaet1;
    [B]fakultaet1=a*(a-1);[/B] = 0 !
    a=a-2;
  }
  while (a>1);
  do //Berechnung der Fakultät
  {
    fakultaet4=fakultaet4*fakultaet2;
    fakultaet2=b*(b-1);
    b=b-2;
  }
  while (b>1);
  
[B]  folge1=(pow (x, n))/(fakultaet1); //Berechnung von zi Division durch 0 !!![/B]
  folge2=(pow (x, n+2))/(fakultaet2); //Berechnung von zi+1
  ergebnis=ergebnis+folge1;
  cout<<ergebnis;
  n=n+2;
  differenz=folge2-folge1;
  
  }
  while (epsilon<differenz); //Abbruchbedingung
  
  cout << ergebnis;
}
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh