Kezdőoldal » Számítástechnika » Programozás » Napok óta ezen a programon...

Napok óta ezen a programon gondolkozom, mi lehet a hiba? Ha van 100 Ft-om a bankban és 10% a kamat és 12 hónapra van lekötve, akkor a tizedik hónap végén lesz otthon 100 Ft-om (a kamatokból), amit berakok, így már 20Ft/hó lenne a kamat.

Figyelt kérdés

A feladatról:

A kerek százasokon felül maradó részt a bank havonta kifizeti, amit otthon őrzünk. Ha az otthon őrzött pénz eléri vagy meghaladja a 100 forintot, akkor abból 100-at beteszünk a bankba. Írj programot, amely megadja, hogy X betett összeg esetén H hónapon keresztül mennyi pénzünk lesz a bankban és mennyi lesz otthon!



unit Unit1;


{$mode objfpc}{$H+}


interface


uses

Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, Math;


type


{ TForm1 }


TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ private declarations }

public

{ public declarations }

end;


var

Form1: TForm1;

toke,kamat,pkamat,ido,i: integer;

osszeg: integer;

f,g: textfile;


implementation


{$R *.lfm}


{ TForm1 }


procedure TForm1.Button1Click(Sender: TObject);

begin

assignfile(f, 'Bemenet.txt');

try

reset(f);

read(f, toke);

read(f, kamat);

read(f, pkamat);

read(f, ido);

except

ShowMessage('Error');

end;

if (toke<99) or (toke>100000) then

ShowMessage('Ennyi pénzt nem tehetsz be! A program most leáll!');

if (kamat<1) or (kamat>10) then

ShowMessage('Ennyi nem lehet a kamat! A program most leáll!');

if (pkamat<0) or (pkamat>kamat) then

ShowMessage('Ennyi nem lehet a prémiumkakmat! A program most leáll!');

if (ido<1) or (ido>48) then

ShowMessage('Ennyi időre nem kötheted le a pénzed! A program most leáll!');

if (toke<99) or (toke>100000) then

close;

if (kamat<1) or (kamat>10) then

close;

if (pkamat<0) or (pkamat>kamat) then

close;

if (ido<1) or (ido>48) then

close;

end;


procedure TForm1.Button2Click(Sender: TObject);

begin

assignfile(g, 'Kimenet.txt');

rewrite(g);

closefile(g);

if pkamat=0 then

For i:=1 to ido do begin

assignfile(g, 'Kimenet.txt');

append(g);

osszeg:=toke;

osszeg:=Trunc(osszeg+(osszeg*kamat*(100*floor(osszeg/100)/toke)*i/100));

writeln(g, 100*floor(osszeg/100),' ',osszeg mod 100);

ShowMessage(IntToStr(osszeg));

closefile(g);

end;

end;


end.



2015. okt. 25. 14:41
 1/5 anonim ***** válasza:
Nos, azt nem írtad le, hogy pontosan mi a baj a programmal? Nem jól számol? Hibát ír ki? Lefut e egyáltalán? Mi az amit nem tudsz megoldani?
2015. okt. 25. 21:12
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:
Lefut rendesen, de nem jól számol. 100 Ft tőkénél 10%-os kamat mellett a 10. hónap után 20 Ft lenne a kamat, nem 10 Ft, de ő 10 Ft-ttal számol.
2015. okt. 25. 21:24
 3/5 CspCsj ***** válasza:

...

toke:=100; (* bankban lévő összeg *)

osszeg:=0; (* otthon lévő összeg *)

kamat:=10;

ido:=42;


for i:=1 to ido do begin

toke:=toke+trunc(toke*kamat/100); (* kamattal növeljük a bankban lévő összeget *)

apro:=toke mod 100; (* kiszámolják a 100 alatti aprópénzt *)

toke:=toke-apro; (* bank kifizeti az aprópénzt *)

osszeg:=osszeg+apro; (* ezt hozzátesszük az otthoni összeghez *)

nagyja:=osszeg-(osszeg mod 100); (* otthon egyből kiszámoljuk az otthoni összeg 100 feletti részét *)

osszeg:=osszeg-nagyja; (* a 100 feletti részt kivesszük az otthoni összegből *)

toke:=toke+nagyja; (* majd betesszük a bankba *)

writeln(toke,' ',osszeg);

end;

...

2015. okt. 26. 00:36
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:
Ehhez közgazdasági témakörben kell kicsit tájékozódnod. Például a kamat-ot látom betetted egy az egyben, pedig ez hiba, általában a kamatot el kell osztani a periódusok számával. Ha 48 hónapra teszel be 10%-os kamatra valamit, akkor a kamatod csak 10/48 = 0,2083333% lesz ezt még osztod ugye 100-al, akkor kijön, hogy 0,00208333 a kamatod.
2015. okt. 26. 07:32
Hasznos számodra ez a válasz?
 5/5 A kérdező kommentje:

#3 Köszönöm, ha lesz lehetőségem, kipróbálom. :)

#4 Jelen esetben van egy példa be- és kimenet és nem ilyen összetetten kell kamatot számolni.

2015. okt. 26. 11:23

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!