mordhorst Geschrieben 30. März 2005 Teilen Geschrieben 30. März 2005 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_Newlukai Geschrieben 30. März 2005 Teilen Geschrieben 30. März 2005 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mordhorst Geschrieben 30. März 2005 Autor Teilen Geschrieben 30. März 2005 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_Newlukai Geschrieben 30. März 2005 Teilen Geschrieben 30. März 2005 Richtig. Allerdings kannst Du keine Pixel ansteuern. Probiers doch erst mal mit Textausgabe (System.out.println()) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 30. März 2005 Teilen Geschrieben 30. März 2005 Problem: Ausgabe in der Konsole. Wird das dann mit System.out.println ausgegeben ?Überhaupt nicht. Die Konsole ist textbasiert, da kannst du mit keiner Programmiersprache direkte Pixelmanipulationen durchführen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 30. März 2005 Teilen Geschrieben 30. März 2005 Ü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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 30. März 2005 Teilen Geschrieben 30. März 2005 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dorti Geschrieben 31. März 2005 Teilen Geschrieben 31. März 2005 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mordhorst Geschrieben 31. März 2005 Autor Teilen Geschrieben 31. März 2005 Hallo... ...vielen Dank für Eure Hilfe Habe das Problem in den Griff gekriegt. Danke nochmal. Grüße, mordhorst Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
perdian Geschrieben 31. März 2005 Teilen Geschrieben 31. März 2005 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 31. März 2005 Teilen Geschrieben 31. März 2005 @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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_Newlukai Geschrieben 31. März 2005 Teilen Geschrieben 31. März 2005 im Ausgangspost stand nichts von (x,y)-Koordinaten oder einer grafischen Ausgabe der Funktionskurve RIchtig. Aber das dann gepostete Zwischenergebnis war eindeutig auf grafische Ausgabe ausgelegt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 31. März 2005 Teilen Geschrieben 31. März 2005 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_Newlukai Geschrieben 31. März 2005 Teilen Geschrieben 31. März 2005 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.