Int funktion[4];
Int maxHeight=0;
for(int i=0; i <= 3; i++) {
funktion[i] = i*i;
if(i > maxHeight) {
maxHeight = i;
}
for(int i=maxheight; i >= 0; i--) {
for(int k = 0; k <= 3; k++) {
if(funktion[k] == i) {
System.out.print(x);
} else {
System.out.println("\t");
}
}
System.out.println("\n");
}
Das setzt aber prinzipiell voraus, dass die Funktion nur ganzzahlige Werte annimmt.Du meinst einen Graphen der Funktion zeichenen?
Das dürfte relativ aufwendig werden, aber du kannst die Konsole als "Netz" benutzen. Erst die Funktionswerde für die x-werte berechnen und danach einzeichnen.
Schon, aber mit ein wenig bearbeitung kann es auch auf reelle Zahlen anwenden.Das setzt aber prinzipiell voraus, dass die Funktion nur ganzzahlige Werte annimmt.
Nein, nicht wirklich, zumindest nicht in der Form. Das setzt ja voraus, dass du jeden Funktionswert auch abtastest, du kannst aber nicht unendlich genau abtasten.Schon, aber mit ein wenig bearbeitung kann es auch auf reelle Zahlen anwenden.
** **
* * * *
* * * *
* ** *
** **
* * * *
* * * *
* * * *
Mir geht es eigendlich nur darum, dass du in deinem Code eine Abgrage auf "==" machst, hingegen wäre eine Rundung auf den nächstgelegenen y-Wert angesagt.Wenn ich doch einen bestimmten Bereich habe wie x=-10 bis x=10 kann ich doch für die meisten Funktionen relativ genaue Werte ausrechnen. Je nach Sichtbarkeit kann ich ja auch mit der Genauigkeit hochgehen. Ich würde das halt ähnlich wie bei meinem Taschenrechner machen.
From Prinzip her ähnlich wie der Code von Templarthelast: Das Grundprinzip ist eben, dass du diskrete Abtastungspunkte hast, und diese Werte dann eben auf den nächstgelegenen y-Wert rundest.Hallo, also ein bild ist schon dabei
Siehe:
https://docs.google.com/viewer?url=...-12/PPss12.pdf?attredirects=0&d=1&chrome=true
Seite 4 Bsp 11
Liebe grüße
Du wertest die Funktion aus, indem du einsetzt., alsohei, danke schonmal für die ganzen kommentare.
Mir fällt es schwer einen Beginn zu finden.
> Du musst also
> -erstmal deine Abtastpunkte aus dem Intervall [a,b] wählen (mit einer hinreichend kleinen Schrittweite)
Zuerstmal muss ich eine Funktion machen mit static double f (double x)
Wie wertet das programm dann die einzelnen y-werte aus?
double y = f(x);
public List<int> function(String function, xMin, xMax) {
List<int> list;
for(i = xMin; i <= xMax; i++) {
for(i = 0; i < function.length; i++) {
if(function.char(k).equals("x") {
function.char(k) = i;
}
}
int returnValue = Integer.parse(function);
list.add(returnValue);
}
static double f(double x) {
return x*Math.sin(x)/2;
}
public static void main(String[] args) {
int breite = 100;
int hoehe = 40;
int a = -20;
int b = 20;
double min = 0;
double max = 0;
for(double i=a; i<=b; i+=schrittweite) {
if(f(i) < min){ min=f(i); }
if(f(i) > max){ max=f(i); }
}
public static void main(String[] args) {
int breite = 100;
int hoehe = 40;
char graph[][] = new char[breite][hoehe];
int a = -20;
int b = 20;
double min = 0;
double max = 0;
double schrittweite= 0.1;
for(double i=a; i<b; i+=schrittweite) {
if(f(i) < min){ min=f(i); }
if(f(i) > max){ max=f(i); }
}
Dann hättest du ein Koordinatensystem, das vertikal von 0 bis 0 geht, hälst du das für sinnvoll?das mimimum und maximum kann ich anfangs mit 0 wählen?, das ist egal oder?
Nun bestimmst du dein vertikales Gitter (dazu steht auch was in der Aufgabenstellung)Wie mache ich nun weiter?
public void draw(String function, xMin, xMax, yMin, yMax){
List<int> list;
for(i = xMin; i <= xMax; i++) {
for(i = 0; i < function.length; i++) {
if(function.char(k).equals("x") {
function.char(k) = i;
}
}
try {
int returnValue = Integer.parseInt(function);
list.add(returnValue);
}catch(NumberFormatException e) {
System.out.println("Die Funktion hat kein korrektes Format");
break;
}
}
for(int i=yMax; i >= yMin;i--) {
for(int k=xMin; k <=xMax;k++) {
if(list.get(k) == i) {
System.out.print(*);
} else {
System.out.println(" ");
}
}
System.out.println("\n");
}
Na dann plotte mal die konstante Funktion 0.5 und zeig mal was dabei rauskommtDamit sollte man jede Funktion mit ein paar zusätzlichen Abfragen zeichnen können.
**********************
if(list.get(k) == i)
if (list.get(k) <= i && i <= list.get(k+1))
List<int>
List<Integer>
for(int y=0; y < hoehe; y++){
for(int x=0; x<breite;x++){
graph[x][y]=' ';
}
}
Das ist doch im Prinzip ein Gitter, du musst die Zeichen nur direkt auf der Konsole ausgeben.so hätte ich nur die Punkte [0][0],[1][1]..
Also bei dem Gitter bräuchte ich nochmals eure hilfe!
Danke
Falsch!wie ich solch ein Gitter konstruieren kann ...
so hätte ich nur die Punkte [0][0],[1][1]..Java:for(int y=0; y < hoehe; y++){ for(int x=0; x<breite;x++){ graph[x][y]=' '; } }
alleGraph=false;
while (weiterePunkte) {
x=berechneWertX();
y=berechneWertY(); // oder wie du das auch immer machst, incl Proleme des Skalierung und Rundung ...
graph[x][y]=true;
}
for(int y=0; y < hoehe; y++){
for(int x=0; x < breite;x++){
if (graph[x][y]) print("*");
else print(" "); //incl Probleme mit Zeichenbreite, ...
}
}
> x=berechneWertX();
Das ist jeweils eine Methode?
y=berechneWertY(); // oder [B][U][SIZE="3"]wie du das auch immer machst[/SIZE][/U][/B], incl Proleme des Skalierung und Rundung ...