Forum: PC-Programmierung C++ Anzahl der Iterationen


von Krabs (Gast)


Lesenswert?

Huhu
ich hätte da nochmal ne Frage zur C++ Programmierung.

Ich habe eine Aufgabe, bei der ich die Wurzel einer Zahl durch eine 
Näherung berechnen soll.
Das bekomm ich soweit noch hin, nur ich soll im nächsten Aufgabenteil 
den Code so erweitern das noch die Anzahl der Iterationen ausgegeben 
wird.
So wie in meinem Code funktioniert es nicht aber er berechnet mir 
zumindest die richtigen Werte...
Hat vllt. jemand von euch eine Idee wie ich das umschreiben könnte?
Achja das sqrt(x) unten hab ich nur reingeschrieben damit ich eine 
Kontrolle hab ob er auch richtig rechnet.



Vielen Dank



1
#include <iostream>
2
#include <math.h>
3
using namespace std;
4
5
int main () 
6
{
7
  double x;
8
  double w;
9
  int i;
10
  int k;
11
  
12
    
13
  cout << "geben sie eine Zahl x > 0 ein: " ;cin >> x;
14
  k=x;
15
  w=x;
16
  if (x > 0){
17
  do
18
  {
19
    w = 0.5*(w + x/w);
20
    ++i;
21
  }
22
  
23
  
24
  while ( (((w*w-x) /x) > 0.000001,i < k ) );
25
  }
26
  else {
27
    cout << "Die Eingabe war keine Positive Zahl" << endl;
28
       }
29
    cout <<"Die Wurzel dieser Zahl lautet:" << w << endl;
30
    cout <<"Anzahl der Iterationen: " << i << endl;
31
    cout <<" " << sqrt (x) << endl;
32
    
33
34
35
    
36
37
return 0;
38
}

von brodel (Gast)


Lesenswert?

> while ( (((w*w-x) /x) > 0.000001,i < k ) );
 && i<k

von Arc N. (arc)


Lesenswert?

i initialisieren?
Nur globale und static Variablen werden autom. mit 0 initialisiert

von Krabs (Gast)


Lesenswert?

Wow vielen Dank !

kannst du mir evtl. noch erklären warum das so ist? Ich komm da 
irgendwie nicht drauf.

von Nico S. (Gast)


Lesenswert?

Krabs schrieb:
> kannst du mir evtl. noch erklären warum das so ist? Ich komm da
> irgendwie nicht drauf.

Ist einfach so definiert. Automatische und dynamisch allozierte 
Variablen werden nicht initialisiert, es steht einfach irgendwas drin. 
Bei Static- und globalen Variablen ist das anders. Da gibts erstmal 
nichts zum Verstehen, das wurd einfach mal so definiert.

von asdf (Gast)


Lesenswert?

wenn mans mal von der hardwareseite sieht: ein register hat beim 
einschalten natürlich alle bits auf 0, sicher gehen kann man sich 
dennoch nicht.
ausser es existiert ein definierter reset wert.

dass der compiler das überhaupt gemacht hat, verwundert mich allerdings.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.