C# while-schleife: aufgabe lösen

RayZero

Lieutenant
Registriert
Sep. 2009
Beiträge
534
hallo leute,

lerne gerade für eine klassenarbeit in sae (erstes jahr fisi) und bin wohl einfach
von geburt an zu blöd für das logische denken beim programmieren.

die aufgabe ist:

die bevölkerung im land A beträgt 60 mio und die im land B beträgt 4 mio.
die bevölkerung im land A nimmt jährlich um 0,5% ab, die bevölkerung
des land B nimm jährlich um 2,5% zu.

wann ist land B so groß wie land A?

Code:
            double landa = 60000000;
            double landb = 4000000;
            double jahre = 1;

            while (landa == landb)
            {

                jahre++;

                landa = landa * 0.95;

                landb = landb * 1.025;

            } 

            Console.WriteLine("Nach " + jahre + " Jahren hat land B die Bevölkerung von land A erreicht");

            Console.ReadKey();

es kommt aber immer 1 raus, wass ja nicht sein kann...
dachte die schleife wiederholt die anweisung so oft, bis land A gleich land B ist
und gibt dann die wiederholung in jahre aus.
aber das ist wohl falsch...

also wie gehts richtig?

grüße
 
Die while-Schleife führt eine Operation aus solange eine Bedingung Wahr ist. Deine Bedingung "landa == landb" ist von Anfang aber immer Falsch, also wird die Schleife nicht ausgeführt.

Was du eher machen solltest ist sowas "führe die Schleife solange aus wie landb <= landa"
 
wow :O

du hast meinen horizont gerade um lichtjahre erweitert!
hat sofort hingehauen!

jetzt soll die schleife aber nur solange gehen, bis land B 10% von der aktuellen bevölkerung von land A hat:

Code:
 {
            double landa = 60000000;
            double landb = 4000000;
            double jahre = 1;

            while (landa / 100 * 10 >= landb)
            {

                jahre++;

                landa = landa * 0.995;

                landb = landb * 1.025;

            } 

            Console.WriteLine("Nach " + jahre + " Jahren hat land B 10% von land A erreicht");

            Console.ReadKey();

        }

als ergebnis kommen 7 jahre raus -> laut lösung müssen es 14 sein. wo ist hier
der denkfehler?!

danke!!!

EDIT: HABS!!!!
 
Zuletzt bearbeitet:
Zurück
Oben