Mathe

Galaxy-Class

Lieutenant
Hier sind doch so ein paar Mathe Genies dabei, oder. Naja jedenfalls sollen wir von der Schule aus ein Programm programieren mit dem man Wurzeln ziehen kann. Da ich Java nicht wirklich gut behersche habe ich gedacht frage ich doch einfach mal hier nach. Vieleicht hat jemand so ein Programm zufällig oder weiß eine URL ,thx!

:p
 
Ein BEkannter von mir hat so eines mit Turbopascal geschrieben, muß ihm mal fragen, ob er es mir geben kann.

znaika.gif
 
Galaxy-Class schrieb:
Hier sind doch so ein paar Mathe Genies dabei, oder. Naja jedenfalls sollen wir von der Schule aus ein Programm programieren mit dem man Wurzeln ziehen kann.

So was macht ihr in der Schule? :eek:

Und worin liegt der Sinn der Übung, wenn du das Teil nicht selber programmierst?
Da ihr in der Schule programmiert, nehme ich an, dass du etwas ähnliches machts wie ich. Welche Programmiersprache lernt ihr denn? Wir haben Turbo C++!
 
naja in BASIC ist das ein paar Zeilen Arbeit und überhaupt kein Problem. QBASIC ist überings auf der Win98 CD dabei (Verzeichnis OTHER\OLDMSDOS)
 
Ich glaub Java hat Wurzel ziehen mit eingebaut und zwar mit Math.sqrt() oder so, aber das wird wohl nicht der Sinn der Aufgabe sein.
 
 MaRs schrieb:
Ich glaub Java hat Wurzel ziehen mit eingebaut und zwar mit Math.sqrt() oder so, aber das wird wohl nicht der Sinn der Aufgabe sein.
Wollt ich auch grad sagen, jede heute erhältliche Programmiersprache hat die Wurzelfunktion drin.

Allerdings kann ich dir leider auch net sagen, wie die Wurzel mathematisch berechnet wird (Oder ist das ein Näherungsverfahren? keine Ahnung)
 
So was macht ihr in der Schule?

Das ganze ist auf freiwilliger Basis!!
Aber so könnte ich meine Note etwas auffrischen, was dringend Nötig währe.

Und worin liegt der Sinn der Übung, wenn du das Teil nicht selber programmierst?

Ich muss verstehen wie es funzt und dann meinem Lehrer erklären. Java Script behersche ich zumindest vom verständnis her ;)

naja in BASIC ist das ein paar Zeilen Arbeit und überhaupt kein Problem
Kann ich leider nicht, trotzdem danke

@MaRs u. V'Ger
thx werde es versuchen.

Ein fertiges Programm hat keiner oder?
 
Hm... Ich habe zwar so gut wie keine Ahnung vom Programmieren, nehme aber zurzeit selber an einem Javakurs teil und hab auch schonmal die Wurzelfunktion benutzt.

Wenn keine grafische Benutzeroberfläche gefragt ist und nur die Quadratwurzel gebraucht wird, könnte ich sowas konstruieren.
 
Hier mal ein Java-Programm das die Wurzel ziehen kann, es verwendet allerdings nur die in Java eingebaute Funktion dafür:

Code:
import java.io.*;  //wird für das Einlesen von Zahlen benötigt

public class Wurzel {
  private double in;
  private double out;
  private boolean istzahl;

  private double einlesen() { //Methode zum einlesen von Zahlen von der Konsole
    Double d = new Double(0);
    System.out.print("Bitte die Zahl von der die Wurzel gezogen werden soll eingeben: ");
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    try {
      d = Double.valueOf(br.readLine());
      istzahl = true;
    }
    catch(Exception e) {
      System.out.println("Fehler beim einlesen, bitte nur Zahlen eingeben.");
      istzahl = false;
    }
    return d.doubleValue();
  } //Ende einlesen

  public void rechne() {
    in = einlesen();
    if ((in >= 0) && (istzahl)) { //wenn die eingelesene Zahl >= 0 ist und es wirklich eine Zahl ist dann wird die Wurzel gezogen
      out = Math.sqrt(in); //genau hier wird die Wurzel berechnet
      System.out.println("Die Wurzel aus "+in+" ist "+out+".");
    }
    else { //sonst Fehlermeldung ausgeben und nochmal
      System.out.println("Die Zahl muss grösser gleich 0 sein!");
      rechne();
    }
  }

  public static void main(String[] args) {
    Wurzel wurzel1 = new Wurzel();
    wurzel1.rechne();
  }
}
 
Ich habe mich von dem obigen Beispiel etwas inspirieren lassen, aber einfacheren Code benutzt. Das Programm versagt, wenn jemand statt Zahlen andere Zeichen eingibt. Es besteht aus 2 Klassen. In der ersten wird definiert, wie Wurzeln berechnet werden und in der zweiten wird das Programm genutzt.

@ Galaxy-Class:
Falls du es möchtest, kann ich Erläuterungen reineditieren.

Klasse1
Code:
public class WurzelBerechner
  {

    public void ZiehWurzel(double eingabezahl)
      {
        double wurzel;
        if (eingabezahl >= 0)
           {
              wurzel = java.lang.Math.sqrt(eingabezahl);
              System.out.println("Die Wurzel aus " + eingabezahl + " ist " + wurzel + ".");
              System.out.println("");
           }
        else
           {
              System.out.println("Aus einer negativen Zahl wie z.B. " + eingabezahl + " kann man keine Wurzel ziehen.");
              System.out.println("");
           };
      }

  }
Klasse 2
Code:
public class Anwendung
  {

    public static void main(String[] args)
      {
         WurzelBerechner w1 = new WurzelBerechner();

            System.out.println("------------------------");
            System.out.println("Wurzelberechnung");
            System.out.println("");

            w1.ZiehWurzel(-1);
            w1.ZiehWurzel(4);
            w1.ZiehWurzel(6.25);
            w1.ZiehWurzel(9);
            w1.ZiehWurzel(10);

            System.out.println("------------------------");
      }

  }
 
Hier nochmal mit dem Verfahren von Heron:

Code:
import java.io.*;  //wird für das Einlesen von Zahlen benötigt

public class Wurzel {
  private double in;
  private double out;
  private boolean istzahl;

  private double heron(double d) { //berechnet die Wurzel nach dem Verfahren von Heron
    double fehler = 0.0004; //gibt die genauigkeit an, hier drei Stellen nach dem Komma
    double a;
    double b;
    a=1;
    b=d;
    while ((b-a)>fehler) {
      b=(a+b)/2;
      a=d/b;
    }
    return b;
  } //ende heron

  private double einlesen() { //Methode zum einlesen von Zahlen von der Konsole
    Double d = new Double(0);
    System.out.print("Bitte die Zahl von der die Wurzel gezogen werden soll eingeben: ");
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    try {
      d = Double.valueOf(br.readLine());
      istzahl = true;
    }
    catch(Exception e) {
      System.out.println("Fehler beim einlesen, bitte nur Zahlen eingeben.");
      istzahl = false;
    }

    return d.doubleValue();
  } //Ende einlesen

  public void rechne() {
    in = einlesen();
    if ((in >= 0) && (istzahl)) { //wenn die eingelesene Zahl >= 0 ist und es wirklich eine Zahl ist dann wird die Wurzel gezogen
      out = Math.sqrt(in);
      System.out.println("Die Wurzel aus "+in+" ist "+out+".");
      System.out.println("Die Wurzel aus "+in+" nach dem Verfahren von Heron: "+heron(in));
    }
    else { //sonst Fehlermeldung ausgeben und nochmal
      System.out.println("Die Zahl muss grösser gleich 0 sein!");
      rechne();
    }
  }

  public static void main(String[] args) {
    Wurzel wurzel1 = new Wurzel();
    wurzel1.rechne();
  }
}
 
Wir hatten für solche Aufgaben etwas, das sich Taschenrechner nennt. Ziemlich nützlich sag ich nur.
 
Taschenrechner? Damals soll es doch auch Rechenschieber gegeben haben, ich hab sie zwar nicht miterleben dürfen, aber die sollen auch der Hammer gewesen sein.
 
MaRs schrieb:
Taschenrechner? Damals soll es doch auch Rechenschieber gegeben haben, ich hab sie zwar nicht miterleben dürfen, aber die sollen auch der Hammer gewesen sein.
Ist eine Frage der Genauigkeit. Für dreistellige Zahlen sind die geeignet, was für viele Zwecke ausreicht. Ist aber natürlich kein Vergleich zu den Fließkommazahlen, die mit 15 Dezimalstellen Genauigkeit und mehr rechnen, die wir heute auf PCs verwenden.
 
Okay erst mal sorry das ich so ein altes topic wieder ausgrabe..

Die Auswertung des "Mathe Programierungsauftrags" hat sich, auch durch den Tod einer Lehrkraft, etwas (oder um fast 3 1/4 Monate) verschoben.

So nun ist es aber bald soweit.
erstellt von Gecko
Falls du es möchtest, kann ich Erläuterungen reineditieren

wäre spitze, ich habe damit ein paar Sachen gemacht es hat aber nicht gefunzt.


genauso Mars
Ich haben ein paar Sachen mit dem Script gemacht aber nicht sonderlich erfolgreich. Also wo soll ich den Code nochmal einfügen?
 
OK. Heute oder morgen mach ich's. Den Javakurs habe ich in diesem Semester mit Ach und Krach bestanden. :bounce:

Was für ein Problem hast du denn bei der Aufgabe? Gibt es irgendeine spezielle Fehlerausgabe? Das Java Development Kit (JDK) hast du doch, oder?

Dürft ihr die vorgefertigte Sqrt-Methode verwenden oder soll man das Verfahren von Heron umsetzen?
 
Das Heron verfahren währe vieleicht besser aber zur Not tuts auch das fertige Sqrt.

Ehrlich gesagt weiß ich nicht genau was ich mit dem Script anfangen soll. Wie hast du dir die Umsetztung ins Grafische denn vorgestellt.

Tja und das Development Kit habe ich auch nicht...
 
Hm... Dann ist es auch kein Wunder, dass die Skripte nichts nutzen. Das JDK ist unbedingt nötig. Die Skripte können in einem einfachen Texteditor erstellt und mit der Endung *.java abgespeichert werden. Diese Java-Dateien sind für den Computer aber noch nicht lesbar. Man muss die Java-Dateien mit dem JDK in Class-Dateien umschreiben (das ist nur ein einziger Befehl in der Dos-Konsole), erst dann sind sie für den Computer lesbar. Beim Ausführen des Programmes kann das JDK dann auch helfen.

Das JDK kannst du bei meiner Uni runterladen, ebenso einen guten Editor, der die Befehlseingabe in die Dos-Konsole überflüssig macht und den Quellcode farbig gliedert (unbedingt nach dem JDK installieren).

Wie groß sind denn deine Java-Kenntnisse inzwischen? Danach richtet sich, wie ausführlich ich kommentiere. Bis wann soll das ganze nochmal fertig sein?

Was meinst du mit "Umsetzung ins Grafische"? Reicht es nicht, wenn das Programm in der Dos-Konsole Daten ausgibt? Grafische Programmierung ist bei Java ziemlich kompliziert. Den Quellcode dazu habe ich in diesem Semester irgendwie zusammengemurkst, aber verstanden hab ich's nicht.
 
Zurück
Oben