Quadratische Funktion
|
Seitenanfang |
Hallo Ich möchte gerne eine Wertetabelle errechnen lassen für eine beliebige Quadratisch Funktion ax² ! Nun stehe ich vor einem Problem, denn ich möchte das die Wertetabelle nicht untereinander sondern nebeneinander ausgegeben wird sprich x1 y2 y3 und leider gibt er mir y1 y2 y3 die Wertetabelle von -10 bis 10 wieder ich möchte aber genau andersrum ! und bei dem 2 print also wo er rausgibt welche Funktion es ist rutscht das *x²immer in die nächste Zeile ! ich hoffe ich bin hier im richtigem Forum wo man sowtwas fragen darf ? hier ist mein Ansatz: #! /usr/bin/perl print "Geben Sie den Streckungs/Stauchungsfaktor für die Quadratische Funktion x² ein\n"; $a = <STDIN>; print "x | $a*x²\n---------------\n"; $x = -10; while ($x <= 10) { $y = $a * $x**2; print "$x | $y\n"; $x += 1; }
Datum: 03.12.2004-19:21

|
re: Quadratische Funktion
|
Seitenanfang |
| >> Wertetabelle von -10 bis 10 wieder ich möchte aber genau andersrum << Dann aendere einfach deinen Schleifenzaehler.
$x = 10; while ($x >= -10) { ... $x--; } oder mach gleich eine for() Schleife draus:
for(reverse (-10..10)) { $x = $_; ... }>> rutscht das *x²immer in die nächste Zeile << Das liegt daran das Du das Newline von der Eingabe nicht entfernst. Eingaben von STDIN sind genauso zu behandeln wie Daten aus Dateien, da der Zeilentrenner noch mit dranhaengt. $a = <STDIN>; chomp($a); Und was genau meinst Du mit "nebeneinander ausgeben"?
Datum: 05.12.2004-08:58

|
re: Quadratische Funktion
|
Seitenanfang |
ja damit meine ich das die wertetabelle nicht x1 y1 x2 y2 x3 y3sondern x1 x2 x3 x4 y1 y2 y3 y4 ausgegeben wird !
Datum: 05.12.2004-10:47

|
re: Quadratische Funktion
|
Seitenanfang |
| Hallo, das kannst Du nur über Arrays lösen. Z.B.: print "Geben Sie den Streckungs/Stauchungsfaktor für die Quadratische Funktion x² ein\n"; $a = <STDIN>; print "x | $a*x²\n---------------\n"; $x = -10; while ($x <= 10) { $y = $a * $x**2; push @xw, sprintf("%6.1f",$x); push @yw, sprintf("%6.1f",$y); $x += 1; } print join("|",@xw)."\n"; print join("|",@yw)."\n"; Dabei musst Du etwas mit der sprintf-Funktion experimentieren, um eine ordentlichen Anzeige zu erhalten. Ciao Ingo
Datum: 06.12.2004-08:25

|
re: Quadratische Funktion
|
Seitenanfang |
| Warum denn zwei Arrays? Und warum X bei der Ausgabe als Float formatieren? Wenn ich vom Ursprungsposting ausgehe, sind das nur die 21 festen Integers von -10 bis +10. Die kann man auch vor den Ergebnissen in einer Schleife ausgeben.
Datum: 06.12.2004-12:23

|
re: Quadratische Funktion
|
Seitenanfang |
| Ah jetzt versteh ichs auch... Gib halt erst die X-Werte aus, hier 4 stellig: for(reverse (-10..10)) { printf '%+4d ', $_; } print "\n";Und dann die Y-Werte hinterher mit der Schleife die Du schon hast. Solltest dann nur die Ergebnisfloats mit (s)printf formatieren, damit's nicht so zerhackt aussieht, wenn Y laenger als 4 Zeichen ist. for(reverse (-10..10)) {printf '%+4d', $_;}
Datum: 06.12.2004-12:31

|
re: Quadratische Funktion
|
Seitenanfang |
| Hallo, 1. es gibt effektiven und lesbaren Code, wobei lesbarer zum Lernen wohl eher besser geeignet ist 2. floats, weil er nicht gesagt hat, dass er als Stauchungsfaktor nur ganze Zahlen eingeben will, so dass es sein kann, dass ihn die Nachkommastelllen interessieren könnten Ciao Ingo
Datum: 07.12.2004-08:08

|