Anfänger kleines Programm (hilfe)
spacer
Autor Nachricht
d.user
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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 :



ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
uses
SysUtils;

var
endbetrag,betrag,i,jahr,zinsen:integer;
begin
writeln('Wie lange wollen Sie Ihr Geld anlegen?');
readln(jahre);

writeln('Wie viel möchten Sie einzahlen?');
readln(betrag);
jahr:=0;
begin
for i:=1 to 15 do begin
jahr:=(0)+1;


// endbetrag:= jahr * zins /100;
end;
writeln('Laenge des Kredits:',jahr,'Ihr Endbetrag:',endbetrag,' Ihre Zinsen,',Zinsen,'');

end;
readln;readln;
end.


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 user profile iconMartok: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am So 29.01.2012 um 13:30
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 83
Erhaltene Danke: 3

win 2000, win xp
Turbo Delphi 2006
BeitragVerfasst: Fr 27.01.12 22:29 
Wilkommen im Forum :welcome:

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
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 43
Erhaltene Danke: 5

Win Vista, Win 7
Delphi 5
BeitragVerfasst: 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
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
d.user Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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 user profile iconNarses: Beiträge zusammengefasst

Moderiert von user profile iconNarses: 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. :)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 43
Erhaltene Danke: 5

Win Vista, Win 7
Delphi 5
BeitragVerfasst: Fr 27.01.12 23:17 
Also etwas langsamer. Mit
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
var
endbetrag,betrag,zinsen:real;
i,jahre:integer;
begin
writeln('Wie lange wollen Sie Ihr Geld anlegen?');
readln(jahre);
writeln('Wie viel möchten Sie einzahlen?');
readln(betrag);

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:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
for i:=1 to jahre do 
begin
zinsen:=betrag*2/100;
endbetrag:=betrag+zinsen;
writeln('Anzahl Jahre:',i,'Ihr Endbetrag:',endbetrag,'Ihre Jahreszinsen,',Zinsen,'');
betrag:=endbetrag;
end;

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
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
d.user Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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 user profile iconNarses: Beiträge zusammengefasst

Hallo, 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 ..
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
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
BeitragVerfasst: 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)
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
d.user Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: So 29.01.12 17:37 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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?
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
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
BeitragVerfasst: So 29.01.12 17:46 
user profile icond.user hat folgendes geschrieben Zum zitierten Posting springen:
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:
ausblenden Delphi-Quelltext markieren
1:
erg: array[5..7] of ...;
Dann hättest du erg[5], erg[6], erg[7].

user profile icond.user hat folgendes geschrieben Zum zitierten Posting springen:
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. ;-)
ausblenden Quelltext markieren
1:
2:
3:
4:
5:
6:
Von Anfang an: i := 1, d.h. zuerst hat i den Wert 1. 
Die nächste Zeile lautet erg[i] := i * 3;.
Also: erg[1] := 1 * 3;

Jetzt kommt der nächste Durchlauf. Da hat i den Wert 2.
Also: erg[2] := 2 * 3;


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.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
d.user Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: 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?
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
MDX
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 571
Erhaltene Danke: 4

Windows 7 Ultimate, Linux Ubuntu 11.04 (Virtual: Windows XP/Vista)
RAD Studio XE 2, PHP, Java (Android)
BeitragVerfasst: Di 31.01.12 00:47 
user profile icond.user hat folgendes geschrieben Zum zitierten Posting springen:
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ß.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
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
BeitragVerfasst: 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. :mrgreen:
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic starofftopic star
Beiträge: 501
Erhaltene Danke: 29


Delphi 2-4
BeitragVerfasst: 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!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home