Αν κάποιος μπορεί να μ βοηθήσει να βρω το λάθος που υπάρχει σε αυτό τον κώδικα
program test1;
uses crt;
var plithos:longint;
epitokio,epit,sun_kef,sun_tokos,kef:real;
const
dek=10000000;
begin
clrscr;
plithos:=0;
sun_tokos:=0;
repeat
writeln('Dwse kefalaio');
readln(kef);
until kef<dek;
writeln('Dwse epitokio');
readln(epit);
repeat
epitokio:=(kef*epit)/100;
sun_kef:=epitokio+kef;
sun_tokos:=sun_tokos+epitokio;
plithos:=plithos+1;
until sun_kef>=dek;
writeln('Ta synolika xronia einai',plithos);
writeln('To synoliko epitokio einai',sun_tokos);
readln;
end.
Το λάθος σου είναι ότι έτσι δεν αποθηκεύεις το καινούριο κεφάλαιο στην ίδια μεταβλητή με το προηγούμενο και έτσι το κεφάλαιο σου είναι ίδιο σε κάθε επανάληψη. Η μεταβλητή sun_kef είναι άχρηστη. Πρέπει το κάθε κεφάλαιο να αντικαθιστά το προηγούμενο και άρα αυτό θα γίνει με μια μεταβλητή
Αλλαγές:
sun_kef:=epitokio+kef; kef:=epitokio+kef;
until sun_kef>=dek; until kef>=dek;
Καλύτερα την μεταβλητή epitokio να την ονομάσεις tokos γιατί για τόκο πρόκειται και στο τελευταίο μήνυμα να πεις O synolikos tokos einai
έχεις δίκαιο ;)
Αν καταχωρίσω σαν μετρητή το sun_kef
δλδ sun_kef:=0
θα είναι σωστό;
Όχι. Μόνο αν θέσεις sun_kef:=kef; πριν την επανάληψη και sun_kef:=epitokio+sun_kef;
Γενικά, μέσα στην επανάληψη θα έχεις μία μεταβλητή για το κεφάλαιο. Αυτή θα πρέπει να έχει πάρει πριν την επανάληψη την τιμή του κεφαλαίου