C# Heron Verfahren


TotalerAnfängerin

Neues Mitglied
Hallo,

ich habe versucht ein Programm zum Heron-Verfahren zu schreiben, bekomme aber leider kein Ergebnis bzw. 0 raus. Und ich finde auch den Fehler nicht. Wäre super, wenn mir jemand etwas weiterhelfen könnte, wo genau mein Fehler liegt und/oder wie ich es besser schreiben könnte.

Die Wurzel soll für die Zahlen zwischen 10 und 100 berechnet werden (in 10er-Schritten, also 10, 20, 30 usw.) und es darf nicht Math.sqrt verwendet werden.
Dir for-Schleife für die Ausgabe habe ich in die Main-Methode eingebaut, die Berechnung für Heron ist eine eigene Funktion.

C:
 double d = 0;                 // d ist der Wert für q
            double firstResult;           // Wert für das Ergebnis der ersten Iteration
            double secondResult;          // Ergebniswert für alle folgenden Iterationen

            firstResult = 1 / 2 + (1 + d / 1);
            secondResult = 1 / 2 * (firstResult + (d / firstResult));
            return secondResult;
Dankeschön im Voraus.
 

Hinweis: Wenn du jetzt Java lernen möchtest, dann schau dir diese kurze Präsentation hier an (hier klicken!)
Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!

Hinweis: Wenn du jetzt Java lernen möchtest, dann schau dir diese kurze Präsentation hier an (hier klicken!)
Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!

Dompteur

Aktives Mitglied
Das Ergebnis der Division von 2 ganzzahligen Werten ist wiederum ein ganzzahliger Wert. Du erwartest aber wahrscheinlich ein Ergebnis von Typ double.
Also 1 / 2 ergibt 0 !
Du kannst einfach bei jeder ganzen Zahl ein ".0" anhängen.
 

TotalerAnfängerin

Neues Mitglied
Das Ergebnis der Division von 2 ganzzahligen Werten ist wiederum ein ganzzahliger Wert. Du erwartest aber wahrscheinlich ein Ergebnis von Typ double.
Also 1 / 2 ergibt 0 !
Du kannst einfach bei jeder ganzen Zahl ein ".0" anhängen.
Stimmt natürlich, danke.
Allerdings bekomme ich trotzdem nicht das richtige Ergebnis raus. Mein Programm gibt mir dasselbe Ergebnis für alle Zahlen aus und zwar 1,45 - das stimmt vor und hinten nicht.
 

Dompteur

Aktives Mitglied
Ich habe das jetzt mit 2 weiteren Iterationen selbst ausprobiert.

Java:
using System;

public class Test
{
    public static void Main()
    {
        double d = 0;                 // d ist der Wert für q
        double firstResult;           // Wert für das Ergebnis der ersten Iteration
        double secondResult;          // Ergebniswert für alle folgenden Iterationen

        firstResult = 1.0 / 2.0 + (1.0 + d / 1.0);
        Console.WriteLine(firstResult);
        secondResult = 1.0 / 2.0 * (firstResult + (d / firstResult));
        Console.WriteLine(secondResult);
        double thirdResult = 1.0 / 2.0 * (secondResult + (d / secondResult));
        Console.WriteLine(thirdResult);
        double forthResult = 1.0 / 2.0 * (thirdResult + (d / thirdResult));
        Console.WriteLine(forthResult);
    }
}
Das liefert mir folgende Ausgabe:
Code:
1.5
0.75
0.375
0.1875
Du kannst das online hier nachvollziehen: https://ideone.com/g8lyfm
 

TotalerAnfängerin

Neues Mitglied
Ich habe das jetzt mit 2 weiteren Iterationen selbst ausprobiert.

Java:
using System;

public class Test
{
    public static void Main()
    {
        double d = 0;                 // d ist der Wert für q
        double firstResult;           // Wert für das Ergebnis der ersten Iteration
        double secondResult;          // Ergebniswert für alle folgenden Iterationen

        firstResult = 1.0 / 2.0 + (1.0 + d / 1.0);
        Console.WriteLine(firstResult);
        secondResult = 1.0 / 2.0 * (firstResult + (d / firstResult));
        Console.WriteLine(secondResult);
        double thirdResult = 1.0 / 2.0 * (secondResult + (d / secondResult));
        Console.WriteLine(thirdResult);
        double forthResult = 1.0 / 2.0 * (thirdResult + (d / thirdResult));
        Console.WriteLine(forthResult);
    }
}
Das liefert mir folgende Ausgabe:
Code:
1.5
0.75
0.375
0.1875
Du kannst das online hier nachvollziehen: https://ideone.com/g8lyfm
Also ich zeige jetzt mal die for-Schleife und die Ausgabe.
Irgendwo habe ich einen herben Fehler. Zudem ist mir bereits der erste Fehler aufgefallen: bei firstResult sollte es
"0.5 * (1.0 + (d/1.0))" lauten.
C:
Console.WriteLine("Wurzelberechnung mit dem Heronverfahren:");
            for (double d = 0; d <= 100; d += 10)
            {
                Console.WriteLine($"{d,4}  | {WurzelHeron(d),8:F5} | {Math.Sqrt(d),8:F5} |  {Math.Sqrt(d),8:F5}");
            }
2.PNG
 

Passende Stellenanzeigen aus deiner Region:


Neue Themen

Oben