| Autor |
Nachricht |
d.user
Hält's aus hier
Beiträge: 5
|
Verfasst: Fr 27.01.12 21:24
Hallo, wenn ich im Falschen Topic gelandet bin, bitte verschieben.
- Vorab: ich bin kein Schüler der möchte, dass Ihr meine Hausaufgaben macht, ich möchte es gerne Lernen! -
Ich würde gerne ein kleines Programm basteln in Delphi 7 (Konsolenanwendung).
Aufgabe:Erstellen Sie ein Programm, das für die Jahre 1-15 die Aufzinsungsfaktoren
für alle ganzzahligen Zinssätze von 2%-6% enthält. Die Zinsberechnung erfolgt Jährlich.
Er soll es gut übersichtlich wieder ausgeben.Ok soweit so gut, ich habe es nun schon so (weit) gebracht :
Ist es sinnvoll die 2-6% als "const" fest zulegen?
Meine Rechnung ist auch Schwachsinn, ich wollte eig. "Jahr * zins /100" jedoch komme ich dann in ein Konflikt, dass liegt
glaube daran, dass ich Integer festgelegt habe, aber er mit Kommastellen rechnen müsste.
Ich denke Ihr könnt mir ein paar Tipps geben oder mir es erklären und NICHT nur die LÖSUNG posten.
Vielen dank schonmal vorab. :)
Moderiert von Martok: Delphi-Tags hinzugefügtModeriert von Narses: Topic aus Sonstiges (Delphi) verschoben am So 29.01.2012 um 13:30
|
| |
|
|
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
Werbung ausblenden? Dann registriere Dich kostenlos.
Weitere Gründe für eine Registrierung.
|
|
bole
      
Beiträge: 83
Erhaltene Danke: 3
win 2000, win xp
Turbo Delphi 2006
|
Verfasst: Fr 27.01.12 22:29
Wilkommen im Forum
Es ist löblich das Du nur ein paar Tips möchtest, nicht den kompletten Source
Mal eine Auflistung war mir aufgefallen ist:
- Die Einrückung ist ziemlich chaotisch! wie man korrekt einrückungen macht das der Source übersichtlicher wird findest Du www.delphi-treff.de/...l/delphi-styleguide/
- Begin / End sind am Anfang eines Blockes nichr einfach wild gestreut...
- Wenn Du die selbe Variable ansprechen willst solltest Du sie auch gleich nennen...
- Du fragst den Benutzer wie lange er sein Geld anlegen möchte, weshalb läuft dann die Schleife bis 15?
- Den Betrag der den User eingibt verwendst du nirgends...
- jahr:=(0)+1; Was willst Du damit erreichen, ich kenne diese Syntax nicht.
- Deine Formel berechnet irgendwas, aber sicher nicht das was Du dir vorstellst...
Für Anfänger ist auch Christians CrashKurs empfelenswert.
Sorry es tönt wohl manchmal etwas hart, ich möchte Dich nicht demoralisieren! Wenn Du dir die Tips beherzigst wird dein Programm bald laufen!
Gruss
Bole
_________________ ein programm macht nicht das was du willst sondern was du schreibst!
Zuletzt bearbeitet von bole am Fr 27.01.12 23:53, insgesamt 1-mal bearbeitet
Für diesen Beitrag haben gedankt: d.user
|
| |
|
|
Mathematiker
      
Beiträge: 43
Erhaltene Danke: 5
Win Vista, Win 7
Delphi 5
|
Verfasst: Fr 27.01.12 22:48
Hallo d.user,
der Aufzinsungsfaktor q ist im Allgemeinen der Term 1 + p/100 %, wobei p der Zinssatz in Prozent ist.
D.h., hast Du einen Anfangsguthaben G, so wird dieses am Ende des Jahres zu G * q = G (1 + p/100). Die Zinsen sind dagegen G * p/100.
Selbst wenn das Anfangsguthaben G ganzzahlig ist, werden die Zinsen und das Guthaben nach einem Jahr meist nicht ganzzahlig sein, d.h. für die Variable Guthaben G wirst Du eine rationale Zahl (d.h. real bzw. double) wählen müssen.
Ein Problem ist noch, dass Du nicht ausführst, ob es sich um Zinseszins handeln soll. Das wäre logisch, denn sonst brauchst Du die Zinsen nicht jährlich neu zu berechnen.
Für die neue Berechnung wirst Du also das Guthaben g in Deiner Programmschleife stets mit dem Aufzinsungsfaktor multiplizieren müssen.
Soll eine Tabelle ausgegeben werden, bei welcher der jährliche Zuwachs angezeigt wird, so muss die Ausgabe ebenfalls in die Programmschleife.
Benötigst Du nur den Endwert, kann die Berechnung auch gleich über Endwert = G * (1+p/100)^15 erfolgen, wobei Du für die Potenzbildung die Power-Funktion verwenden kannst.
Aus Deinen Ausführungen entnehme ich, dass für alle p = 2, 3, ..., 6 % die Rechnung durchgeführt werden soll.
Dazu müsstest Du wahrscheinlich eine 2.Schleife einsetzen oder den Zinssatz p ebenfalls über readln einlesen.
Unklar ist für mich auch noch, ob es sich tatsächlich um eine Aufzinsung eines Guthabens handelt oder Du die Verminderung eines Kredits berechnen willst. In Deiner writeln-Ausgabe steht ja "Kredit".
Es wäre also schön, wenn Du die genaue Aufgabenstellung angegeben würdest.
Beste Grüße
Mathematiker
Für diesen Beitrag haben gedankt: d.user
|
| |
|
|
d.user 
Hält's aus hier
Beiträge: 5
|
Verfasst: Fr 27.01.12 22:51
Hey super das mir so schnell geholfen wird.
Ich musste doch sehr schmunzeln als ich deine Tipps las, weil sie auch sehr zutreffend waren.
Ich versuch mich mal daran und melde ich gleich wie weit ich gekommen bin.
Moderiert von Narses: Beiträge zusammengefasst
Moderiert von Narses: Komplett-Zitat des letzten Beitrags entfernt.
Das ist für den Moment auf jeden fall zu viel für mich, so schnell komm ich da doch noch ganz nicht mit, das Einzige was ich bis jetzt "Programmiert" habe war ein Taschenrechner mit einer Anleitung von Youtube.
Also immmer langsam am. 
|
| |
|
|
Mathematiker
      
Beiträge: 43
Erhaltene Danke: 5
Win Vista, Win 7
Delphi 5
|
Verfasst: Fr 27.01.12 23:17
Also etwas langsamer. Mit
liest Du die Anzahl der Jahre ein und das Anfangsguthaben. Nur die Zählvariable i und die Jahre sollten ganzzahlig sein.
In der nun folgenden Schleife berechnest Du die Zinsen und den neuen Betrag am Ende des Jahres. Hier gehe ich von p = 2% aus:
Der angegebene Quellcode ist nicht optimal. Streng genommen benötigst Du nicht Extravariablen für die Zinsen und den jeweiligen Endbetrag. Aber vielleicht verstehst Du es so besser.
Den Rest solltest Du selbst versuchen, d.h. den Prozentsatz eingeben bzw. als 2.Schleife umsetzen.
Grüße
Mathematiker
|
| |
|
|
d.user 
Hält's aus hier
Beiträge: 5
|
Verfasst: Sa 28.01.12 00:24
Sehr schön, ich werde mich erstmal mit dem Anfänger Guide von "christian stelzmann" dises Wochenende auseinander setzen, da es mir nach den ersten beiden Kapitel sehr nützlich erscheint.
Danach werde ich mich weiter mit meinem kleinem Programm beschäftigen und mich hier wieder melden!
Vielen Dank schonmal an euch beide! Moderiert von Narses: Beiträge zusammengefasstHallo, ich habe mir bis zu den Arrays alles durchgelesen.
Aber schon beim durchlesen vom Array, hab ich kaum noch was verstanden.(entweder weil es total ernüchternt ist, die ganze Zeit nur Theorie zu lesen oder es war zu komplex erklärt)
Nun möchte ich nicht jammern, aber habt Ihr vil. ein Tipp für mich, wie ich besser ins Schema reinkomme, ohne das ich die Flinte ins Korn werfe weil ich es nicht verstehe?
Treu nach dem Motto:( Wo ein Wille ist, ist auch ein Weg.)
Danke euch schonmal ..
|
| |
|
|
jaenicke
      
Beiträge: 15833
Erhaltene Danke: 737
XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
|
Verfasst: So 29.01.12 13:40
Nun ja, ich weiß nicht so recht was ich dazu jetzt schreiben soll, weil mir nicht klar ist wo du genau nicht weiterkommst.
Fangen wir einmal am Anfang an:
Hast du vom Prinzip her verstanden was ein Array überhaupt ist? (unabhängig davon wie man es benutzt)
|
| |
|
|
d.user 
Hält's aus hier
Beiträge: 5
|
Verfasst: So 29.01.12 17:37
jaenicke hat folgendes geschrieben : | Nun ja, ich weiß nicht so recht was ich dazu jetzt schreiben soll, weil mir nicht klar ist wo du genau nicht weiterkommst.
Fangen wir einmal am Anfang an:
Hast du vom Prinzip her verstanden was ein Array überhaupt ist? (unabhängig davon wie man es benutzt) |
Erstmal *THUMBS UP* für diese Community, ich bin begeistert, wie hilfsbereit und nett hier alle sind.
Nun zum Array, natürlich könnte ich einfach sagen, nein habe ich nicht und einer würde es mir erklären.
Ich gebe mal in meinem Worten wieder, was ich bis jetzt unter dem Begriff "Array" definieren kann.(Warnung: evt. unübersichtlich)
Array ist wie eine Tabelle oder Liste lauter Variablen.So ist es möglich, erg: Array [0..3] festzulegen.
Das ist dann in etwa das gleiche wie var erg1,erg2,erg3.
So weit hab ich das verstanden. Ich habe mir die Erklärung ausm Netz gesucht. Die nette Person, die (das,den?)Array erklärt, schrieb noch folgendes:"
...
sozusagen: for i = 1 to 10 do erg[i] = i*3;
bringt:
erg[1] = 3
erg[2] = 6
erg[3] = 9
...
erg[10] = 30 "
Das habe ich leider nicht ganz verstanden.
for i = 1 to 10 do ( die Schleife soll von 1 - 10 zählen und dann : "erg[i] = i*3;"
Warum ist i = 1?, der Befehl lautet doch nur von 1 - 10 soll er zählen.
Er zählt also:
erg[1] = 3
erg[2] = 6
erg[3] = 9
erg[4] = 12
erg[5] = 15
erg[6] = 18
erg[7] = 21
erg[8] = 24
erg[9] = 27
erg[10] = 30
Habs gerade beim Schreiben etwas besser verstanden.
Aber kann mir bitte jemand noch einmal explizit diesen Befehl erläutern? "erg[i] = i*3;"
Warum: erg[i] = i*3 ?
Klar, er soll für erg i nehmen und bis 10 hochzählen und dabei i*3 nehmen wobei i zu beginn 1 ist?
|
| |
|
|
jaenicke
      
Beiträge: 15833
Erhaltene Danke: 737
XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
|
Verfasst: So 29.01.12 17:46
d.user hat folgendes geschrieben : | Array ist wie eine Tabelle oder Liste lauter Variablen.So ist es möglich, erg: Array [0..3] festzulegen.
Das ist dann in etwa das gleiche wie var erg1,erg2,erg3. |
Um genau zu sein hast du vier Werte:
erg[0], erg[1], erg[2] und erg[3]
Du gibst also die Indizes an. (Anders als in anderen Sprachen, wo ein Array meist immer automatisch bei Null beginnt, so dass die Längenangabe reicht.)
Es geht also auch: Dann hättest du erg[5], erg[6], erg[7].
d.user hat folgendes geschrieben : | Aber kann mir bitte jemand noch einmal explizit diesen Befehl erläutern? "erg[i] = i*3;"
Warum: erg[i] = i*3 ?
Klar, er soll für erg i nehmen und bis 10 hochzählen und dabei i*3 nehmen wobei i zu beginn 1 ist? |
Stell dir einmal vor was da passiert.
Heißt:
Bei jedem Durchlauf wird an die Stelle i im Array der Wert i multipliziert mit 3 gelegt. Sprich 3, 6, 9, ... usw.
So ca. verstehe ich auch deinen letzten Satz. Wenn du das so meintest, hattest du es schon richtig geschrieben.
|
| |
|
|
d.user 
Hält's aus hier
Beiträge: 5
|
Verfasst: Mo 30.01.12 23:20
Super.
Dann habe ich den Array verstanden.
Eine Randfrage, wie merkt ihr euch diese ganzen Befehle, das ist doch "unmöglich" oder ist das einfach nur Routine und irgendwann sind die Befehle auswendig gelernt?
|
| |
|
|
MDX
      
Beiträge: 571
Erhaltene Danke: 4
Windows 7 Ultimate, Linux Ubuntu 11.04 (Virtual: Windows XP/Vista)
RAD Studio XE 2, PHP, Java (Android)
|
Verfasst: Di 31.01.12 00:47
d.user hat folgendes geschrieben : | | Eine Randfrage, wie merkt ihr euch diese ganzen Befehle, das ist doch "unmöglich" oder ist das einfach nur Routine und irgendwann sind die Befehle auswendig gelernt? |
Aus meiner persönlichen Sicht einfach Routine und Logik (meistens sind die Funktionen etc. einfach nur Englisch). Außerdem kann man per Google auch ganz schnell eine Lösung finden wenn man mal doch was nicht weiß.
|
| |
|
|
jaenicke
      
Beiträge: 15833
Erhaltene Danke: 737
XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
|
Verfasst: Di 31.01.12 01:14
Die Syntax und grundlegende Sprachelemente wie Schleifen und so gehen nach ein paar Jahren in Fleisch und Blut über. Die schreibt man einfach hin ohne drüber groß nachzudenken, egal ob nun Delphi, C#, Java, PHP, JavaScript, ...
Für andere Befehle gibt es vor allem die Syntaxergänzung. Englischkenntnisse sind als Softwareentwickler ohnehin selbstverständlich und damit findet man auch unbekannte Befehle in der Regel gut. Und sonst gibt es ja wie erwähnt Tante Google und Onkel Hilfe. 
|
| |
|
|
Delphi-Laie
       
Beiträge: 501
Erhaltene Danke: 29
Delphi 2-4
|
Verfasst: Di 31.01.12 15:53
Aller Anfang ist schwer, aber kein Anfang währt ewig.
Mal eine kleine Nähkästchenplauderei: Das erste Programmierproblem, vor dem ich vor nahezu einem Vierteljahrhundert stand (ich glaube mich zu erinnern, daß es keine Aufgabenstellung, sondern selbstgewählt war), war die Berechnung der Fakultät. Natürlich nicht mit Rekursion (das/die kannte Basic nicht), sondern mit einer einfachen Zählschleife. Ich war dazu nicht imstande. Die Multiplikation mit einem Faktor innerhalb der Schleife kam mir nicht in den Sinn, weil mir die Algorithmier- bzw. Programmierdenkweise bis dato völlig fremd war. Nach dem Hinweis eines Kommilitonen (genaugenommen Mitabiturient, denn ich legte meine Hochschulreife in einem Intensivkurs direkt an der Hochschule ab) fiel der Groschen. Heute grinse ich darob.
Also, Kopf hoch!
|
| |
|
|
|