Java :: Aufgabe #177

2 Lösungen Lösungen öffentlich

Wurzel ziehen mit Intervallschachtelung

Anfänger - Java von Felix - 11.07.2017 um 21:30 Uhr
Schreibe eine Methode die aus einer Zahl die Wurzel zieht, benutze dafür die Intervallschachtelung.

Lösungen:

vote_ok
von KarinB (300 Punkte) - 16.07.2017 um 16:23 Uhr
Quellcode ausblenden Java-Code
public static String wurzelBerechnung(double zahl) {
	double oben = 0.0;
	double unten = 1.0;
	double i = 1.0;

	if (zahl < 0) {
	   return "Wurzel aus einer negativen Zahl?";
	} else {
	    if (zahl < 1) {

		oben = 1.0;
		unten = 0.0;
	    } else {
		oben = 1.0;
		while ((oben * oben) < zahl)
		    oben++;
		
		if ((oben * oben) == zahl)
		    unten = oben;
		else
		    unten = oben - 1;
	    }

	    while ((oben - unten) > 1.0E-14) {
		i = i / 10;

		while (Math.pow(unten + i, 2) < zahl)
		    unten = unten + i;
		oben = unten + i;
	    }
	    
	    String rueckgabe = ("Die Wurzel liegt zwischen " + unten + " und " + oben + ".");
	    return rueckgabe;
	}
    }
vote_ok
von nOrdan (1160 Punkte) - 21.07.2019 um 21:43 Uhr
Main-Klasse:

Quellcode ausblenden Java-Code


import Methodensammlung.Methoden;

import java.math.BigDecimal;

import java.io.FileWriter;

import java.io.BufferedWriter;

import java.io.File;

import java.io.IOException;

/**
 * Schreibe eine Methode die aus einer Zahl die Wurzel zieht, benutze dafür die Intervallschachtelung. 
 * Prinzip der Intervallverschachtelung: http://www.schule-studium.de/Mathe/Intervallschachtelung.html
 * 
 * @author (nOrdan) 
 * @version (21.07.2019)
 */

public class Verschachtelung
{

    Methoden m = new Methoden();

    public static void main(String [] args) throws IOException
    {
        Verschachtelung v = new Verschachtelung();
        v.inputs();
    }

    private void inputs() throws IOException
    {
        boolean valid1 = false;
        int n = 0;
        int stellen = 0;
        while (valid1 == false)
        {
            String input1 = m.userInput("Geben Sie die Zahl ein aus welcher die Wurzel gezogen werden soll: ");
            m.errorIntInput(input1);
            try
            {
                n = m.parseInt(input1);
                valid1 = true;
            }
            catch(Exception e)
            {
                m.errorMessage("Keine Zahl","Ungültige Eingabe");
            }
        }
        valid1 = false;
        while (valid1 == false)
        {
            String input1 = m.userInput("Wieviele Nachkommastellen sollen berechnet werden? Bedenken Sie, umso mehr Nachkommastellen sie verlangen, umso länger dauert die Berechnung!");
            m.errorIntInput(input1);
            try
            {
                stellen = m.parseInt(input1);
                valid1 = true;
            }
            catch(Exception e)
            {                                        
                m.errorMessage("Keine Zahl","Ungültige Eingabe");
            }
        }
        berechnung(n,stellen);
    } 

    public void berechnung(int n,int stellen) throws IOException
    {        
        BigDecimal entfernung = new BigDecimal("1");
        BigDecimal kommazahl = new BigDecimal("1");
        for (int i = 0; i < stellen+1; i++)
        {
            while (((kommazahl.pow(2)).compareTo(BigDecimal.valueOf(n))) == -1)
            {
                kommazahl = kommazahl.add(entfernung); 
            }
            kommazahl = kommazahl.subtract(entfernung); 
            entfernung = entfernung.divide(BigDecimal.valueOf(10));
        }
        BufferedWriter out = new BufferedWriter(new FileWriter(new File("GezogeneWurzel.txt")));
        out.write(kommazahl.toString());
        out.close();
        m.informationMessage("Ihre Kommazahl ist in der Datei GezogeneWurzel.txt im Ordner dieses Programmes gespeichert" , "Ergebnis");
    }
}



Methoden aus meiner Methodensammlung:

Quellcode ausblenden Java-Code

public void errorMessage(String message,String errorName)
    {
        JOptionPane.showMessageDialog(null,message,errorName,JOptionPane.ERROR_MESSAGE); 
    }
    
    public void informationMessage(String message,String informationName)
    {
        JOptionPane.showMessageDialog(null,message,informationName,JOptionPane.INFORMATION_MESSAGE);
    }

public void errorIntInput(String input)
    {
        if (input == null) 
        {
            System.exit(0); //Drückt der User auf abbrechen wird null zurück gegeben und das Programm wird beendet
        }
        else if (input.isEmpty() == true)
        {
            
        }
    }

public int parseInt(String input)
    {
        return Integer.parseInt(input);
    }

public String userInput(String message)
    {
        return JOptionPane.showInputDialog(message);
    }

1809818

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.