Βοηθεια

Ξεκίνησε από GeorgeG, 29 Δεκ 2012, 06:14:57 ΜΜ

« προηγούμενο - επόμενο »

GeorgeG

Αν κάποιος μπορεί να μ βοηθήσει να βρω το λάθος που υπάρχει σε αυτό τον κώδικα

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.

petrosp13

Το λάθος σου είναι ότι έτσι δεν αποθηκεύεις το καινούριο κεφάλαιο στην ίδια μεταβλητή με το προηγούμενο και έτσι το κεφάλαιο σου είναι ίδιο σε κάθε επανάληψη. Η μεταβλητή sun_kef είναι άχρηστη. Πρέπει το κάθε κεφάλαιο να αντικαθιστά το προηγούμενο και άρα αυτό θα γίνει με μια μεταβλητή
Αλλαγές:
sun_kef:=epitokio+kef;   kef:=epitokio+kef;
until sun_kef>=dek;  until kef>=dek;

Καλύτερα την μεταβλητή epitokio να την ονομάσεις tokos γιατί για τόκο πρόκειται και στο τελευταίο μήνυμα να πεις O synolikos tokos einai
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

GeorgeG

έχεις δίκαιο  ;)
Αν καταχωρίσω σαν μετρητή το sun_kef
δλδ sun_kef:=0
θα είναι σωστό;

petrosp13

Όχι. Μόνο αν θέσεις sun_kef:=kef; πριν την επανάληψη και sun_kef:=epitokio+sun_kef;
Γενικά, μέσα στην επανάληψη θα έχεις μία μεταβλητή για το κεφάλαιο. Αυτή θα πρέπει να έχει πάρει πριν την επανάληψη την τιμή του κεφαλαίου
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής