While-Schleife

Hallo,

meine Aufgabe lautet:
Implementieren Sie im untenstehenden Programm eine while-Schleife, um die minimale
Anzahl n der Jahre zu ermitteln, die man bei einem Anfangskapital von k0 = 10981 Euro und
einem Zinssatz p = 0.023 benötigt, um ein Endkapital von mindestens kn = 20000 Euro zu besitzen.
Geben Sie die Anzahl n der Jahre und das Endkapital kn auf der Konsole aus.

Mein Ansatz sieht so aus:
Java:
class V {
	public static void main(String[] args) {
		double k0 = 10981.0; // Anfangskapital
		double p = 0.023; // Zinssatz
		double k_max = 20000; // gewuenschtes minimales Endkapital
		double kn = k0; // Kapital nach n Jahren
		int n = 0; // Anzahl der Jahre
		
		while(n<=k_max){
			k_max = k0 + p * k0 - kn;
			kn = kn + k_max;
			System.out.println(kn);
			n++;
		}
	}
}
Auf der Konsole wird zweimal die Zahl 11233.563 ausgegeben. Wie kann das Endkapital auf der Konsole ausgegeben werden? Besten Dank im Voraus.
 

HimBromBeere

Top Contributor
dir ist schon klar, dass du erstmal ein gewisses q errechnen musst (denn wenn du eine Zahl mit .023 multiplizierst, wird sie wahrscheinlich kleiner und nicht größer, was ein schlechter Zins wäre...), falls dir das aus der Schule noch was sagt.

EDIT: Achso... das Program geht ja anders... mal überlegen

Deine Bedingung ist übrigens schonmal falsch, es müsste viel eher heißen
Code:
while(kn <= k_max)

und dann berechnest du bitte nicht k_max neu (das sollte konstant bei 20.000€ liegen), sondern das kn und zwar über
Code:
kn = kn * q

EDIT: Schau dir im Zweifelsfall mal deinen Mathehefter an zum Thema rekusrive Zahlenfolgen. Da wird das sicherlich irgendwo stehen...
 
Zuletzt bearbeitet:

HimBromBeere

Top Contributor
wenn du da ´n paar Klammern setzt, ergibt´s auch Sinn.

Ist zwar etwas kompliziert, geht aber auch so (kürzer wäre folgendes:
Code:
k(n) = k(n - 1) * (1 + p)
)

Welche der beiden auch immer du nimmst, jetzt hast du die Formel, die du in deine Schleife baust...
 
Zuletzt bearbeitet:

HimBromBeere

Top Contributor
das war keine Java-Code-Zeile (was man schon daran erkennt, dass nicht das JAVA-Code-Tag verwendet wurde). Es war eine mathematische Formel. Das Anfangskapital k0 hast du schon "initialisiert" (
Code:
double k = 10981.0
)
 
Der Quelltext sieht so aus:
Java:
class V {
	public static void main(String[] args) {
		double k0 = 10981.0; // Anfangskapital
		double p = 0.023; // Zinssatz
		double k_max = 20000; // gewuenschtes minimales Endkapital
		double kn = k0; // Kapital nach n Jahren
		int n = 0; // Anzahl der Jahre
		
		while(kn<=k_max){
			kn = k0 + p * k0;
			kn = kn + k_max;
			System.out.println(kn);
			n++;
		}
	}
}
Ist der Quelltext jetzt richtig?
 

HimBromBeere

Top Contributor
neeeeee... das k_max hat in der Berechnung des aktuellen Kapitals nichts verloren (oder siehst du das in deiner Mathe-Formel irgendwo?). k0 brauchsteauch nicht, sondern nur ein einziges k (oder halt kn, mir egal, wie du das nennst^^) und ein k_max
 
Meintest du etwa so hier?:
Java:
class V {
	public static void main(String[] args) {
		double k0 = 10981.0; // Anfangskapital
		double p = 0.023; // Zinssatz
		double k_max = 20000; // gewuenschtes minimales Endkapital
		double kn = k0; // Kapital nach n Jahren
		int n = 0; // Anzahl der Jahre
		
		while(kn<=k_max){
			kn = kn + p * kn;
			kn = kn + k0;
			System.out.println(n + ": " + kn);
			n++;
			
		}
	}
}
 

Neue Themen


Oben