Funktion zeichnen

pinky23

Mitglied
Hallo. Ich lerne gerade in Java zu programmieren und kenne mich noch sehr wenig aus. Habe eine Aufgabe bei der ich garnicht weiss wie ich anfangen soll,ich habe keinen Ansatz keine Ideen garnichts. Könnte mir vielleicht jemanden helfen?Bitte Bitte.LG

Die Aufgabe ist:
Das folgende Programm soll eine mathematische Funktion in der Konsole zeichnen. Im Programm selbst soll eine statische Funktion f(x) mit der Signatur static double f(double x) definiert werden,die z.B. return x*Math.sin(x)/2; berechnet. Weiters gibt es Variablen a und b für die linke und rechte Grenze der Darstellung. Skaliere die Differenz von b-a auf eine sinnvolle Breite von 80-100 Zeichen und ebenso in die vertikale Richtung von etwa 40-50 Zeichen (max(f(x))-min(f(x)) für jeden x aus [a,b]). Die Funktion selbst soll als "Kette" von zusammenhängenden *-Zeichen dargestellt werden.Beispiel:
***
** *****
* ***
* **
* *
* *
***
Es ist außerdem günstig Grenzen, sowie Minima und Maxima vertikaler Werte anzugeben.
 
P

ppppppp

Gast
Hallo. Ich lerne gerade in Java zu programmieren und kenne mich noch sehr wenig aus. Habe eine Aufgabe bei der ich garnicht weiss wie ich anfangen soll,ich habe keinen Ansatz keine Ideen garnichts. Könnte mir vielleicht jemanden helfen?Bitte Bitte.LG

Die Aufgabe ist:
Das folgende Programm soll eine mathematische Funktion in der Konsole zeichnen. Im Programm selbst soll eine statische Funktion f(x) mit der Signatur static double f(double x) definiert werden,die z.B. return x*Math.sin(x)/2; berechnet. Weiters gibt es Variablen a und b für die linke und rechte Grenze der Darstellung. Skaliere die Differenz von b-a auf eine sinnvolle Breite von 80-100 Zeichen und ebenso in die vertikale Richtung von etwa 40-50 Zeichen (max(f(x))-min(f(x)) für jeden x aus [a,b]). Die Funktion selbst soll als "Kette" von zusammenhängenden *-Zeichen dargestellt werden.
Es ist außerdem günstig Grenzen, sowie Minima und Maxima vertikaler Werte anzugeben.

Code:
Beispiel:
***
    **                  *****
       *           ***
       *       **
       *      *
        *    *
         ***

Die Aufgabestellung verlangt, alle Werte f(x), mit x aus [a,b], zuerst zu sammeln, bevor sie ausgeben werden, damit das Minimum und Maximum ermittelt werden kann. Das ginge einfach mit einem Array, wobei dann die Indices x-Werte sind und Elemente y-Werte. Probier das mal.
 

muckelzwerg

Bekanntes Mitglied
Wo hast Du denn die Aufgabe her? Studierst Du zufällig in Hessen? ;)

Und was ist das konkrete Problem? Hast Du noch nie einen Computer benutzt, noch nie was programmiert, oder kannst Du es vielleicht doch etwas konkreter sagen? ;)
Schreibe eine statische Funktion. Kannst Du das? Sorge dafür, dass die Funktion korrekt rechnet und den gewünschten Wert zurückgibt.
Bau als nächstes die Grenzen ein und berechne alle notwendigen Werte.
Schreibe die Werte Zeile für Zeile in die Konsole.
Wenn Du da angekommen bist, dann schauen wir mal nach der positionierung und den "*".
 

pinky23

Mitglied
Ich glaube ich habe es geschafft bin mir nicht sicher ob es auch richtig ist. funktionieren tut es aber.
Programmiert habe ich bis jetzt noch nie habe eine Vorlsung im März angefangen und kenne mich sehr wenig aus. Nein ich studiere nicht in Hessen sondern in Wien.


public class ASCII2 {


static double f(double x){ return x*Math.sin(x)/2; }

public static void main(String[] args) {
boolean debug_mode = false;
int breite = 100;
int hoehe = 20;
char graph[][] = new char[breite][hoehe];
int a = -20;
int b = 20;
double min = 9999;
double max = -9999;
//int range = Math.abs(a) + Math.abs(b);
int range = hoehe - 1;
double schrittweite= ((double) b- (double)a) / (double)breite;
int j_tmp = 0;
String linegraph = "";

//ermittle Maxima der Funktion
for(double i=a; i<b; i+=schrittweite) {
if(f(i) < min){ min=f(i); }
if(f(i) > max){ max=f(i); }
}
double delta = max-min;
double scale = range/delta;
double scaled;
double offset = -Math.ceil(min*scale)+1;

/* DEBUG-Ausgabe */
if(debug_mode==true) {
System.out.println("Debug-Modus:");
System.out.println("Schrittweite: "+schrittweite);
System.out.println("a:\t"+a+"\tb:\t"+b);
System.out.println("hoehe:\t"+hoehe+"\tbreite\t"+breite);
System.out.println("min:\t"+min+"\tmax:\t"+max);
System.out.println("delta:\t"+delta+"\tgerundet:\t"+(int)delta);
System.out.println("offset:\t"+offset+"\tgerundet:\t"+(int)offset);
System.out.println("scale:\t"+scale+"\tgerundet:\t"+(int)scale);
System.out.println("range:\t"+range);
System.out.println();
/* DEBUG-Ausgabe */
}
//Graph mit Punkten/Leerzeichen auffüllen
for(int i=0; i < hoehe; i++){
for(int j=0; j<breite;j++){
graph[j]=' ';
}
}
for(double x=a; x<b && j_tmp<breite; x+=schrittweite){
if(debug_mode==true) System.out.println("x="+x+"\tf(x)="+f(x));
scaled=(f(x)*scale)+offset;
if((int)scaled >= hoehe){ //check auf hoehe, weil hoeher < breite
System.out.println("ERROR! Plot-Bereich zu groß! Grenzen verkleinern!");
return; //Programm beenden
}
graph[j_tmp][(int) scaled] = '*';
j_tmp++;
}

//Ausgabe
for (int i=0; i<hoehe;i++){
for (int j=0; j<(int)breite;j++){
if(j==breite-1){
linegraph += graph[j]+"\n";
}else{
linegraph += graph[j];
}
}
}
System.out.println(linegraph);
}
}
 

pinky23

Mitglied
Vielleicht könnten ihr mich bei einer anderen aufgabe jedoch helfen mit der ich auch nicht viel anfangen kann.
und zwar:

Eine beliebige Funktion ƒ : R ! R soll in einer separaten Methode static
double f(double x) angegeben werden. Gib eine Auswertungstabelle für diese Funktion
aus. Es soll der Anfangswert, der Endwert und die Schrittweite in Variablen vorgegeben
werden. Gib die Tabelle zeilenweise als formatierten String mit der Funktion
System.out.printf() auf die Art aus, dass die Zahlen am Komma untereinander
ausgerichtet sind, zwei Nachkommastellen haben und es eine vertikale Trennlinie gibt.
Beispiel:
x | f(x)
----------|------------
2.00 | 2.91
4.50 | 1.21
6.00 | 0.72
8.50 | -11.92
10.00 | -108.03
 

Quaxli

Top Contributor
Noch ein paar Anmerkungen zum ersten Programm.

1. Du solltest Variablen und Methoden etwas sprechender benennen. Zum einen weißt Du dann immer auf den ersten Blick was gerade gemacht wird - auch nach einem halben Jahr. Zum anderen bekommt man als hilfsbereiter Forenteilnehmer schneller eine Idee, was Sache ist.
Deine Methode zur Berechnung der Werte heißt einfach nur "f". Klar, das ist bequem zu tippen. "computeFunction" oder ähnliches wäre aber bei weitem hilfreicher. Gleiches gilt für Variablen die einfach nur a oder b heißen.

2. Ich persönlich verwende nach if-Bedingungen immer geschweifte Klammern. Damit läuft man nicht Gefahr, daß man das mal vergisst, wenn eine if-Bedingung mehr als eine Zeile Code enthält. Das kann u. U. zu unschönen Fehler führen. Ist aber prinzipiell Deine Sache.

3. Alles in die main-Methode zu quetschen ist auch nicht schön, für einen Programmieranfänger aber wohl o.k.. ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
S Quadratische Funktion mit Java primitiv zeichnen. Java Basics - Anfänger-Themen 6
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
FunkyPhil94 Wert in einer Lambda Funktion erhöhen Java Basics - Anfänger-Themen 3
M Eine Funktion zuweisen Java Basics - Anfänger-Themen 3
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
M variable in anderer funktion aufrufen Java Basics - Anfänger-Themen 10
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
W GUI - JButton ohne Funktion? Java Basics - Anfänger-Themen 24
J Rekursive Funktion und return statement Java Basics - Anfänger-Themen 3
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
R Buttons ohne Funktion Java Basics - Anfänger-Themen 2
I Generische Funktion Java Basics - Anfänger-Themen 3
E Pervasive PSQL insert funktion geht nicht Java Basics - Anfänger-Themen 9
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
T Log Funktion erstellen Java Basics - Anfänger-Themen 1
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
H Den Wert einer rekursiven Funktion bestimmen Java Basics - Anfänger-Themen 5
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
M toDouble Funktion Java Basics - Anfänger-Themen 3
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
X Ackermannsche Funktion Java Basics - Anfänger-Themen 32
F Arrays: Mathematische Funktion Java Basics - Anfänger-Themen 19
P Dezimal zu Hexadezimalzahl Funktion Java Basics - Anfänger-Themen 5
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
M Arrays in Funktion Kopieren und Bearbeiten Java Basics - Anfänger-Themen 4
B Funktion mit mehreren Rückgabewerten aka Prozeduren? Java Basics - Anfänger-Themen 12
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
D Funktion nur 1 Rueckgabewert Java Basics - Anfänger-Themen 9
M Wie lang eine Funktion/Methode? Java Basics - Anfänger-Themen 51
N den inhalt eines array per funktion ausgeben Java Basics - Anfänger-Themen 8
R Ackermann Funktion Java Basics - Anfänger-Themen 2
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
T Rekursion Warum bricht meine Funktion nicht ab Java Basics - Anfänger-Themen 4
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
E Contain-funktion überlisten Java Basics - Anfänger-Themen 4
J Division ohne Arithmetische Funktion Java Basics - Anfänger-Themen 2
S Funktion in Klasse auslagern Java Basics - Anfänger-Themen 4
J Problem mit Boolean bei Funktion! Java Basics - Anfänger-Themen 5
S Gibt es eine Funktion, die gewissermaßen eine Reihe von instanceOf() vereinheitlicht? Java Basics - Anfänger-Themen 19
D Nullstellen einer Funktion 3. Grades mit Horner Schema Java Basics - Anfänger-Themen 6
Aprendiendo Gibt es in der JAVA-API eine Funktion, die eine Dezimalzahl in eine binäre Zahl umwandelt? Java Basics - Anfänger-Themen 8
D Funktion gibt Dimension zurück Java Basics - Anfänger-Themen 11
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
B Zugriffe in einer Klasse / Funktion Java Basics - Anfänger-Themen 9
J Array innerhalb einer Funktion mehrfach iniatilisieren Java Basics - Anfänger-Themen 4
T Lambda-Funktion bei Binärbäumen Java Basics - Anfänger-Themen 13
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
M Thread.sleep() Funktion Java Basics - Anfänger-Themen 1
B OOP Wie benutze ich die Main Funktion richtig? Java Basics - Anfänger-Themen 10
H Nicht Static Funktion ohne Objekt aufrufen? Java Basics - Anfänger-Themen 6
K Methoden mit den Namen accept. Welche Funktion haben diese? Java Basics - Anfänger-Themen 2
E Compare-Funktion bei eigener Klasse Java Basics - Anfänger-Themen 4
S Threads run - Funktion wird nur einmal ausgeführt. Java Basics - Anfänger-Themen 8
B Anwender soll mathematische Funktion eingeben können, Einfachster Fnktionsplotter Java Basics - Anfänger-Themen 4
R If Funktion funktioniert nicht :P Java Basics - Anfänger-Themen 3
H Funktion in Hintergrund und Vordergrund ausführen Java Basics - Anfänger-Themen 11
S Funktion die mir fuer einen String eine Zahl zwischen 0.0 und 1.0 zurueckliefert..? Java Basics - Anfänger-Themen 9
S Funktion eines Stacks Java Basics - Anfänger-Themen 4
T Integer-Objekt über Hash-Funktion in Array ablegen Java Basics - Anfänger-Themen 1
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
D Keine Funktion bei "else" Java Basics - Anfänger-Themen 5
S timer funktion mit javax panel Java Basics - Anfänger-Themen 3
T Klassen Funktion in einem Funktionsaufruf definieren Java Basics - Anfänger-Themen 3
F Funktion eines JButton in einen Vektor verlagern Java Basics - Anfänger-Themen 4
X Eval-Funktion mit Variable Java Basics - Anfänger-Themen 2
T Screenreader Funktion Java Basics - Anfänger-Themen 2
S Wertetabelle einer Funktion f : R -> R Java Basics - Anfänger-Themen 1
P Methoden suche funktion die char wert ausgibt wenn man numerischen wert und radix angibt Java Basics - Anfänger-Themen 1
1 repaint() Funktion erzeugt Flackern Java Basics - Anfänger-Themen 33
J Taschenrechner Funktion Java Basics - Anfänger-Themen 18
R if funktion ohne else - Bedingung trifft nicht zu, ausgabe nicht nachvollziehbar Java Basics - Anfänger-Themen 7
shiroX OOP Java Funktion implementieren Java Basics - Anfänger-Themen 3
O Debug-Funktion mit Slick - Kleines Problem Java Basics - Anfänger-Themen 5
F Funktion immer zur vollen Stunde? Java Basics - Anfänger-Themen 3
S ResultSet close() in funktion nich möglich. Java Basics - Anfänger-Themen 8
C Meine erste Funktion Java Basics - Anfänger-Themen 12
J Funktion um JSON per Post senden/emfangen Java Basics - Anfänger-Themen 3
G OOP Aus Objekt auf Funktion der erzeuger Klasse zugreifen? Java Basics - Anfänger-Themen 11
D Binäre Suche für Integerarray in rekursiver Funktion Java Basics - Anfänger-Themen 5
M Interface als Konstruktorparameter nutzen, um Funktion zu plotten Java Basics - Anfänger-Themen 14
NR_EIGHT Benutzereingabe in Funktion verpacken Java Basics - Anfänger-Themen 4
J Funktion definieren und ausfuehren Java Basics - Anfänger-Themen 27
D Loop Funktion für Robot Klasse Java Basics - Anfänger-Themen 5
N mathematische Funktion Java Basics - Anfänger-Themen 29
R Programm verstehen, Funktion Java Basics - Anfänger-Themen 4
C Automatisches Ausfuehren einer Funktion beim Laden eines Jar files Java Basics - Anfänger-Themen 3
O Nicht Standard Form boolesche Funktion in Standard Form parsen Java Basics - Anfänger-Themen 3
F Sleep Funktion Java Basics - Anfänger-Themen 12
S Euklid Funktion Java Basics - Anfänger-Themen 8
H Funktion mit Argumenten Java Basics - Anfänger-Themen 5
Q Random Funktion JButtons Java Basics - Anfänger-Themen 6
O Probleme mit der repaint-Funktion Java Basics - Anfänger-Themen 6
F Eine Frage über paint() Funktion Java Basics - Anfänger-Themen 2
S Parameterübergabe - identische Funktionen, aber falsche Funktion Java Basics - Anfänger-Themen 5
C Probleme mit replaceAll Funktion Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben