Autor Beitrag
Llena De Vida
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 16.11.13 23:59 
Hallo...

Ich setze mich ganz frisch mit C# (und überhaupt mit Programmierung) auseinander.
Momentan finde ich einfach den Fehler bei einer do-Schleife nicht.

Die Variable n soll solange verdoppelt werden und mit diesem neuen Wert die Berechnung so lange ausgeführt werden, bis das Ergebnis z kleiner oder gleich g = 0.00001 ist.
Dann soll über die Konsole ausgegeben werden, bei welchem Wert n dies der Fall ist.
Ich weiß, dass dies bei n = 524288 der Fall ist, aber das Programm rechnet immer weiter.
Erkennt er das "While" nicht?

Schon mal vielen Dank und ein schönes Wochenende...!




ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        {
            {
                double n = 2;
                double x = 0;
                double y = 0;
                double z = y - x;
                double g = 0.00001;

                do
                {
                    n *= 2;
                    {for (double i = 1; i <= n; i++)
                    
                        x = x + ((1 / n) * Math.Sqrt((1 - (i / n) * (i / n))));
                    }
                    {for (double i = 0; i <= n - 1; i++)
                    
                        y = y + ((1 / n) * Math.Sqrt((1 - (i / n) * (i / n))));
                    }
                    z = y - x;
                    Console.WriteLine("n =" + n);

                }
                
                while (z >= g);
            }

            
            Console.ReadLine();

        }
    }
}


Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 17.11.13 00:07 
Also wenn ich mir zusätzlich zu n auch noch z ausgeben lassen, geht das mal stramm auf die 0,5 zu und wird nie kleiner:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
z = 0,25            n = 4
z = 0,375                 n = 8
z = 0,437500000000001     n = 16
z = 0,468750000000001     n = 32
z = 0,484375              n = 64
z = 0,492187500000002     n = 128
z = 0,496093750000002     n = 256
z = 0,498046875000002     n = 512
z = 0,499023437500002     n = 1024
z = 0,49951171874999      n = 2048
z = 0,499755859374957     n = 4096
z = 0,499877929687457     n = 8192
z = 0,499938964843707     n = 16384
z = 0,499969482421832     n = 32768
z = 0,499984741210895     n = 65536
z = 0,499992370605426     n = 131072
z = 0,499996185302692     n = 262144
z = 0,499998092651325     n = 524288
z = 0,499999046325641     n = 1048576
z = 0,499999523162799     n = 2097152
z = 0,499999761583503     n = 4194304
z = 0,499999880792792     n = 8388608
z = 0,499999940397437     n = 16777216



P.S.: :welcome:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Llena De Vida Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 17.11.13 09:01 
Moin Christian!

Ah! Dann stimmt tatsächlich die Formel nicht... Sowas.
Vielen Dank für Deine Hilfe und die Willkommensgrüße! :)

Einen schönen Sonntag wünscht
Alex
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 17.11.13 11:20 
Hallo,

da stimmt wohl die Klammerung bei (1 - (i / n) * (i / n)) nicht.

P.S. Welche Formel soll das denn sein - hat die einen bestimmten Namen?
Llena De Vida Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mo 18.11.13 23:26 
Hallo Th69,

hab den Fehler gefunden, und nun läufts, vielen Dank!
Zu Beginn der Schleife mußten x und y wieder auf 0 gesetzt werden... daran habe ich nicht gedacht.

Vielen Dank für Eure Hilfe!

Einen schönen Abend,
Alexandra