Zum Inhalt springen

Sinuskurve in Konsole


mordhorst

Empfohlene Beiträge

Hi zusammen...

...ich soll laut Aufgabenstellung die Funktion sin(x) über dem Inertvall [0.0,2*PI] in der Konsole ausgeben.

Das Problem ist - es soll nicht objektorientiert werden!

Sondern nur die main-Methode beinhalten.

Wäre toll, wenn da jemande eine Idee oder

einen Ansatz hätte.

Vielen Dank schonmal...

Grüße, mordhorst

Link zu diesem Kommentar
Auf anderen Seiten teilen

Selbst ein Programm nur mit main ist ganz genau genommen objektorientiert. Aber das nur nebenbei.

Hast Du denn schon ein Struktogramm oder so? Wo hakt's denn?

An sich mußt Du nur eine Schleife über das Intervall laufen lassen und in entsprechenden Abständen die Funktion sin() der Klasse Math aufrufen. Ob man das jetzt auch als objektorientiert sieht, ist Geschmackssache.

Aber mehr braucht's eigentlich nicht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hey...

...erstmal vielen Dank für die Hilfe.

Also im Prinzip ist es schon fertig...aber nicht nur mit einer Methode:

import java.awt.*;

import javax.swing.*;

public class Sinus extends JPanel {

double sinKurve;

int y = 200, x = 300;

int abbildungX, abbildungY, yMitte = 100;

public static void main(String args[]) {

JFrame frame = new JFrame("Sinuskurve");

frame.getContentPane().add(new Sinus());

frame.pack();

frame.setVisible(true);

}

public void paintComponent(Graphics g) {

super.paintComponent(g);

for (int i = 0; i < 360; i++) {

sinKurve = java.lang.Math.sin(i / 180.0 * java.lang.Math.PI);

abbildungX = new Double(x / 360.0 * i).intValue();

abbildungY = new Double(sinKurve * y / 2).intValue() + yMitte;

g.drawLine(abbildungX, abbildungY, abbildungX, abbildungY);

}

}

public Sinus() {

setBackground(Color.white);

setForeground(Color.red);

setPreferredSize(new Dimension(300, 200));

}

}

Problem: Ausgabe in der Konsole.

Wird das dann mit System.out.println ausgegeben ?

Viele Grüße, mordhorst

Link zu diesem Kommentar
Auf anderen Seiten teilen

Überhaupt nicht. Die Konsole ist textbasiert, da kannst du mit keiner Programmiersprache direkte Pixelmanipulationen durchführen.

Er könnte die Funktionswerte mit äquidistanter Schrittweite berechnen und ausgeben.

Letzlich genau das gleiche, auch die Zahl an Pixeln ist endlich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

for (int i = 0; i < 360; i++) {

sinKurve = java.lang.Math.sin(i / 180.0 * java.lang.Math.PI);

abbildungX = new Double(x / 360.0 * i).intValue();

abbildungY = new Double(sinKurve * y / 2).intValue() + yMitte;

g.drawLine(abbildungX, abbildungY, abbildungX, abbildungY);

}

}

Das könnte man noch verbessern. Es wär sinnvoller zu jeder x-Koordinate genau einen Sinus-Wert zu berechnen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Der Lehrer meint das bestimmt so, oder?

public class Test {

static int max_x = 36;

static int max_y = 20;

static int range = max_x * 10;

static int array_length = max_x + 1;

static int[] werte_tab = new int[array_length];

public static void main(String[] args) {

for ( int i = 0; i < array_length; i++ ){

werte_tab = (int) Math.round(Math.sin( i*10 / 180.0 * java.lang.Math.PI ) * 10);

}

for ( int j = -10; j <= 10; j++){

for ( int i = 0; i < array_length; i++ ){

if ( j == werte_tab ){

System.out.print("°");

} else {

System.out.print(" ");

}

}

System.out.println();

}

}

}

Koordinatensystem ist noch nicht reingebastelt. Wegen Rundungsfehler ist das Ganze teilweise gestreckt und gestaucht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Er könnte die Funktionswerte mit äquidistanter Schrittweite berechnen und ausgeben.

Letzlich genau das gleiche, auch die Zahl an Pixeln ist endlich.

Naja, das ist irgendwo Haarspalterei :)

Für mich ist die Konsole textbasiert. Klaro, kannst du durch die auswahl bestimmter Zeichen auch wieder direkte Pixelansteuerung mehr oder weniger gut simulieren (nicht umsonst gibt's klasse ASCII-Art-Kunstwerke).

Aber ob man das wirklich als zeichnen im urpsrünglichen Sinne von X,Y Koordinate ziehen und Farbwert setzen nennen kann - jeder so, wie es ihm gefällt ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Perdi

im Ausgangspost stand nichts von (x,y)-Koordinaten oder einer grafischen Ausgabe der Funktionskurve. Es war nur nach Funktionswerten in einem gegebenen Intervall gefragt. Die Aufgabe kann gemäß geposteter Aufgabenstellung als Liste mit Zahlen, die in der Konsole ausgegeben wird, vollständig umgesetzt werden.

Also eine Ausgabe in der Art:

sin(0) = 0

sin(0.1) = 0.099

sin(0.2) = 0.19

...

sin(PI/2) = 1

...

sin(PI) = 0

...

sin(3/2*PI) = -1

...

sin(2*PI) = 0

Link zu diesem Kommentar
Auf anderen Seiten teilen

RIchtig. Aber das dann gepostete Zwischenergebnis war eindeutig auf grafische Ausgabe ausgelegt.

Wenn er die Aufgabe im 1. Post richtig wiedergegeben hat, hätte er sich die Grafik folglich spaaren können. Insbesondere, dass keine Objektorientierung verwendet werden soll sprach gegen Grafik, da für ein Fenster mindestens eine Objektinstanz gebraucht wird.

Letzlich Haarspalterei und mir ist es sowieso egal.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn er die Aufgabe im 1. Post richtig wiedergegeben hat, hätte er sich die Grafik folglich spaaren können. Insbesondere, dass keine Objektorientierung verwendet werden soll sprach gegen Grafik, da für ein Fenster mindestens eine Objektinstanz gebraucht wird.

Jopp

Letzlich Haarspalterei und mir ist es sowieso egal.

dito

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...