Zaccharias Geschrieben 20. Februar 2011 Geschrieben 20. Februar 2011 Hallo leute, ich bin hier gerade am schreiben von einem Skript, das mir die wertminderung ausrechnen soll und dann solange den restwert ausgibt, bis er an einem bestimmten wert angekommen ist. Als beispiel habe ich einen Anfangswert von 1000 €, eine jährliche Wertminderung von 15 % und einen restwert von 400 € eingetragen. Die Ausgabe erfolgt zwar schon, so, wie ich es will, aber sobald der Wert unter die 400 € fällt, soll dieser wert nicht mehr mit ausgegeben werden. Könnt ihr mir helfen? Ich hab gerade einen totalen blackout, wie ich da weiter machen muss. hier mal das skript: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Cp1252"> <title>Wertminderung</title> </head> <h2>Wertminderung-Eingabeformular</h2> <body> <form action="wertminderung.php" method="POST"> <table> <tr> <td>Anschaffungswert</td><td><input type="text" name="anschaffung" size="5" /></td><td>€</td> </tr> <tr> <td>Jährliche Wertminderung</td><td><input type="text" name="minderung" size="5" /></td><td>%</td> </tr> <tr> <td>Voraussichtlicher Restwert</td><td><input type="text" name="rest" size="5" /></td><td>€</td> </tr> <tr> <td><input type="submit" name="send" value="berechnen" /></td> </table> </form> <?php if (isset($_POST["send"])) { $anschaffung=$_POST["anschaffung"]; $minderung=$_POST["minderung"]; $jahr=0; echo "Wert nach 0 Jahren: ".number_format($anschaffung,2,',','.')." €<br>"; while ($anschaffung > $_POST["rest"]) { $ergebnis=$anschaffung*$minderung/100; $anschaffung=$anschaffung-$ergebnis; $jahr++; echo "Wert nach $jahr Jahren: ".number_format($anschaffung,2,',','.')." €<br>"; } } ?> </body> </html>[/PHP] Die Augabe sieht dann so aus: Wertminderung-Eingabeformular Anschaffungswert € Jährliche Wertminderung % Voraussichtlicher Restwert € Wert nach 0 Jahren: 1.000,00 € Wert nach 1 Jahren: 850,00 € Wert nach 2 Jahren: 722,50 € Wert nach 3 Jahren: 614,13 € Wert nach 4 Jahren: 522,01 € Wert nach 5 Jahren: 443,71 € Wert nach 6 Jahren: 377,15 € mein Problem ist, dass der letzte wert, der ja unter 400 liegt, nicht mehr angezeigt werden soll. Das skript soll dann aufhören, wenn der wert kleiner als 400 ist. Zitieren
flashpixx Geschrieben 20. Februar 2011 Geschrieben 20. Februar 2011 Schau Dir Deine Schleife einmal an und rechne sie mal für ein kleines Beispiel per Hand, genauso wie Du sie programmiert hast, durch Zitieren
Zaccharias Geschrieben 20. Februar 2011 Autor Geschrieben 20. Februar 2011 (bearbeitet) ich hoffe, ich bin auf dem richtigen Weg. Also, ich habe das mit der Schleife nochmal nachgerechnet. Wenn ich das richtig sehe, gibt die Schleife jeden wert aus, bis der Wert unter dem ist, der im Formular eingegeben wurde.... So und nun stehe ich doof da und weiß nicht, wie ich der schleife sagen soll, dass sie aufhören soll, sobald der wert unter 400 gehen würde. Muss ich da noch eine If-Bedingung reinfummeln? Bearbeitet 20. Februar 2011 von Zaccharias Zitieren
flashpixx Geschrieben 20. Februar 2011 Geschrieben 20. Februar 2011 Nein ein If ist nicht notwendig. Geh bitte noch einmal hin und überlege Dir jede (!) einzelne Anweisung. Schau Dir an, wann Du was berechnest und wann Du etwas ausgibst. Überlege Dir auch die Bedingungen der Schleifen, vor allem ob Du eine kop- oder fußgesteuerte Schleife benötigst: PHP: while - Manual PHP: do-while - Manual Zitieren
Zaccharias Geschrieben 20. Februar 2011 Autor Geschrieben 20. Februar 2011 Oh mann, ich danke dir für den Hinweis....da wäre ich sonst noch dran verzweifelt, ich habe jetzt eine fußgesteuerte Schleife genommen.... der Code sieht jetzt so aus.... Nicht gerade die Musterlösung, aber es funktioniert. if (isset($_POST["send"])) { $anschaffung=$_POST["anschaffung"]; $minderung=$_POST["minderung"]; $jahr=0; do { $ergebnis=$anschaffung*$minderung/100; echo "Wert nach $jahr Jahren: ".number_format($anschaffung,2,',','.')." €<br>"; $anschaffung=$anschaffung-$ergebnis; $jahr++; } while ($anschaffung > $_POST["rest"]); }[/PHP] Sollte doch jetzt auch richtig sein. Zitieren
Zaccharias Geschrieben 20. Februar 2011 Autor Geschrieben 20. Februar 2011 habe jetzt noch zwei andere Übungsaufgaben gemacht. Ich muss mir das echt merken, dass man jede Anweisung einzeln durchmacht und genau drauf schaut, wann ich was machen muss. danke vielmals für den Hinweis...hat mir wirklich sehr viel weitergeholfen. Zitieren
flashpixx Geschrieben 20. Februar 2011 Geschrieben 20. Februar 2011 Danke für das Kompliment. Zitieren
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.