PDA

View Full Version : سوال بسيار مهم در مورد محاسبات تاريخ



K.Mohammadreza
شنبه 27 تیر 1388, 14:42 عصر
با سلام به همه دلفي کاراي عزيز
لطفا کمک کنيد.
من يک برنامه نوشته ام براي اعطاي وام. حالا ميخواهم در برنامه سود سالانه را بصورت شش ماهه اول و دوم محاسبه کنم. برنامه به اين صورت است که فرضا وامي با تعداد قسط 15 به فردي داده مي شود. باز پرداخت ممکن است ماهانه يا چند ماه يکبار باشد يعني فاصله بين اقساط متغيير است و کمتر از 1 و بيشتر از 15 نمي شود و در صورتي که 15 باشد وام بايست بصورت يکجا در سررسيد مشخص شده بازپرداخت شود و در صورتي که فاصله بين اقساط کمتر ياشد با در تاريخ مشخصي شده مبلغ مشخص شده باپرداخت شود. با توجه به توضيح بالا بايد سود شش ماهه اول سال و دوم هر سال مشخص شود. فرضا وامي در تاريخ 15/02/88 به مبلغ 50.000.000 ريال به شخصي داده مي شود اگر تعداد اقساط 20 و فاصله بين هر قسط را 2 ماه در نظر بگيريم و نرخ وام را هم 15 در نظر بگيريم سررسيد هاي آن وام بصورت زير مي شود.
وام = 50,000,000
قسط 1 = 5,000,000
سود قسط 1 = 1,250,000
سررسيد = 1388/4/15

وام = 45,000,000
قسط 2 = 5,000,000
سود قسط 2 = 1,125,000
سررسيد = 1388/6/15

وام = 40,000,000
قسط 3 = 5,000,000
سود قسط 3 = 1,000,000
سررسيد = 1388/8/15

وام = 35,000,000
قسط 4 = 5,000,000
سود قسط 4 = 875,000
سررسيد = 1388/10/15

وام = 30,000,000
قسط 5 = 5,000,000
سود قسط 5 = 750,000
سررسيد = 1388/12/15

وام = 25,000,000
قسط 6 = 5,000,000
سود قسط 6 = 625,000
سررسيد = 1389/2/15

وام = 20,000,000
قسط 7 = 5,000,000
سود قسط 7 = 500,000
سررسيد = 1389/4/15

و تا آخر. خب من بايد برنامه اي بنويسم که تا تاريخ 31/06/88 سود نيم سال اول را حساب کند يعني تا تاريخ 15/06/88 + 16 روز از سود قسط 15/08/88 و همچنين سود شش ماهه دوم را از تاريخ 1/07/88 تا 30/12/88 که از31/06/88 تا 15 /12/88 و 15 روز از قسط 15/02/89 مي شود و در سال بعد هم به همين صورت. خواهشا کمک کنيد خيلي ضروريه.
با تشکر از همه دوستان و برنامه نويسان و محخصوصا همه آن افرادي که اين سوال را خواندند.

tdkhakpur
شنبه 27 تیر 1388, 14:58 عصر
سلام
ببینید اینطوری به نتیجه نمیرسید شما شروع به نوشتن کنید کمکتان میکنیم.
برای شما ساختار برای کارتان را معرفی کنید که بتواند مبلغ کل را در خودش ذخیره کند مثلا شما50,000,000 را باید کلا پرداخت کنید علاوه بر سود که آخرش به این مبلغ اضافه میشود.
یک ساختار دیگر برای هر ماه در نظر بگیرید که فیلد های تاریخ رسید و مبلغ اقساط و سود .
برا ی هر ماه شما با توجه به اقساط برای دو ماه - مبلغ قسط اول را از مبلغ کل (50,000,000)کم کنید و در ساختار اول update کنید تا مانده کل مشخص باشد. و به همین ترتیب برای ماههای دیگر محاسبه را انجام دهید.
توجه داشته باشید سود هر ماه براساس مبلغ مانده کل انجام میگیرد.

Pr0grammer
شنبه 27 تیر 1388, 15:03 عصر
خب، دوست عزیز مشکل کجاست؟ :لبخند:
اینکه شرح برنامه بود! شما فقط توضیح دادید چه برنامه ای رو می خواین بنویسید!
خودتون شروع کنید به نوشتن؛ اگه مشکلی داشتید یا کمکی خواستید دوستان راهنمائی می کنند.

موفق باشید

K.Mohammadreza
شنبه 27 تیر 1388, 16:20 عصر
دوستان گرامي من تمام برنامه را نوشتم و فقط در قسمت محاسبه سود شش ماه اول و دوم مشکل دارم و بقيه برنامه بسيار راحت بود!!!!
اين هم کدهاي برنامه البته توابع ديگري را که بکار بردم ام نمي آورم و فقط کدهاي کليد محاسبه



MV := StrToInt(GetNumber(edtMablaqvam.Text));
Mq := Round(Mv / (tA div fA));
i := 1;
j := 1;
SumSood := 0;
SumVam := Mv;
while i <= tA do
begin
i := i + fA;
with Memo1 do
begin
fDate := IntToStr(sY) + '/' + IntToStr(sM) + '/' + IntToStr(sD);
Lines.Add('وام = ' + Set3Digit(IntToStr(Mv)));
Lines.Add('اصل قسط ' + inttostr(j) + ' = ' + Set3Digit(IntToStr(Mq)));
Sood := Round((Mv * dN * fA) / 1200);
Lines.Add('سود قسط ' + IntToStr(j) + ' = ' + Set3Digit(IntToStr(Sood)));
Lines.Add('تاريخ پرداخت قسط = ' + fDate);
Lines.Add(#13#10);
SumSood := SumSood + Sood;
MV := MV - Mq;
if chkCheckC.Checked then
begin
DGV := IncreaseDate(DGV, 0 , fA, 0);
DecodeDate(DGV, sY, sM, sD);
GregorianToSolar(sY, sM, sD);
end
else
IncreaseFDate(sY, sM, sD, fA);
inc(j);
end;
end;
SumVam := SumVam + SumSood;
Memo1.Lines.Add('===============================') ;
Memo1.Lines.Add('جمع کل سود خالص = ' + Set3Digit(IntToStr(SumSood)));
Memo1.Lines.Add('مبلغ وام با سود = ' + Set3Digit(IntToStr(SumVam)));

mehdimdp
یک شنبه 28 تیر 1388, 00:12 صبح
منظور شما از محاسبه ي سود ، محاسبه ي سود تمام وامهاست يا هر شخص جدا ؟

K.Mohammadreza
یک شنبه 28 تیر 1388, 18:04 عصر
سلام و با تشکر از عنايت دوستان
دوستان گرامي من يک وام به شخصي مي دهم اين وام به احتمال زياد بيش از شش ماه باز پرداخت دارد يعني اينکه ممکن است 7 ماه و ممکن است تا 36 يا بيشتر قسط داشته باشد. من ميخواهم سود شش ماهه هر وام را حساب کنم. بخدا ديگر نميدانم چگونه توضيح دهم.

فرض کنيد که وامي در تاريخ 15/2/88 به شخصي داده شده است اين وام 36 قسط دارد حالا برنامه علاوه بر محاسبه سود هر قسط (که خودم آن را نوشتم ) بايد سود شش ماهه اول و دوم هر سال را نيز حساب کند يعني تا تاريخ 31/6/88 جمع سود قسطها را حساب کند حتي چند روز از قسطي که در مهر ماه قرار مي گيرد يعني سود 15/02/88 + 15/03/88 + 15/04/88 + 15/05/88 + 15/06/88 + 16 روز از قسط 15/07/88 که جمع اين سود ها مي شود سود شش ماهه اول سال 88 و جمع سود اقساط 15/07/88 + 15/08/88 + 15/09/88 +15/10/88 + 15/11/88 + 15/12/88 + 15روز از قسط 15/01/89 - 16 روز کسر سود قسط 15/07/88 بايت اضافه شدن 16 روز از قسط 15/07/88 به قسط 15/06/88 مي شود سود شش ماهه دوم سال 88 و در سالهاي بعدي نيز همين طور. مثلا در سال 89 تا قسط 15/06/89 + 16 روز از قسط 15/07/89 - 15 روز کسر سود از سود قسط 15/01/89 بابت اضافه شدن 15به قسط 15/12/88:گریه:

K.Mohammadreza
یک شنبه 28 تیر 1388, 20:46 عصر
راه حلش را پيدا کردم آيا کسي تابعي براي بدست آوردن اختلاف دو تاريخ داره؟
تابعي که دو تاريخ را از هم کسر کنه و حاصل را بصورت يک عدد نشان بده؟
مثلا 29/12/87 - 1/07/87 حاصلش 178 ميشه. اين تابع در فايل persiandll وجود داره و اسمش هم diffDate هست آيا کسي سورس اين تابع را داره چون نميخوام از اين dll استفاده کنم

با تشکر:متفکر:

merced
یک شنبه 28 تیر 1388, 21:57 عصر
int := DaysBetween(ANow,AThen)
شما تاريخ هاي شمسي رو به ميلادي تبديل كن با تابع بالا تعداد روزهاي بينشون رو بدست بيار

K.Mohammadreza
دوشنبه 29 تیر 1388, 13:34 عصر
با سلام
راه حلي که پيدا کرده بودم بدرد ...... ميخوره!!!
نه تنها مشکل را حل نکرد بلکه دو چندان هم کرد. حالا از همه برنامه نويسان درخواست کمک دارم چون واقعا گيج شدم و نمي دانم چکار کنم.
اول صورت مسئله را مي نويسم


بنام خدا
برنامه اي بنويسيد که وامي را به شخصي بدهد و کارهاي زير را نيز انجام دهد:
1- سررسيد قسط هاي آن را محاسبه کند 2- سود هر قسط را حساب کند 3- جمع سود وام را حساب کند 4- سود شش ماهه اول و دوم هر سال را حساب کند (مشکل اينجاست) 5-وام قابليت پرداخت اقساط با فاصله زماني چند ماه يکبار را داشته باشد (مشکل اينجاست اما خوشبختانه فاصله زماني طوري تعيين مي شود که حاصل تقسيم تعداد اقساط بر فاصله زماني بينن اقساط هميشه صفر مي شود. مثلا اگر تعدا اقساط 60 باشد فاصله زماني يکي از مقسوم عليه هاي 60 است مثلا 1و 2و 3و 4 و 5 و 6 و ... ولي 7و 9و 8 نمي تواند باشد).

فرمول محاسبه سود = مبلغ کل وام * نرخ * فاصله اقساط / 1200 براي هر قسط، که در محاسبه سود قسط بعدي بايد اصل قسط از مبلغ کل وام کسر گردد و به اين ترتيب سود قسط آخر کمترين سود و سود قسط اول بيشترين سود خواهد بود.

مسکل اينجاست بايد جمع سودهاي يک سال را بدست بياوريم به تفکيک شش ماه اول و دوم يعني تا تاريخ 31/6/xx و 30/12/xx سپس اختلاف روز را نيز بدست آوريم و اولين سود قسط در نيمسال بعد را نيز بدست آوريم و آن سود در اختلاف روز ضرب کنيم و بر تعداد روزهاي آخر هر نيمسال تقسيم کنيم. سپس عدد بدست آمده را به سود نيمسال قبلي اضافه کنيم. براي اينکه بيشتر متوجه شويد دو مثال ميزنم.

مبلغ وام 60.000.000 ريال
نرخ وام 13 درصد
سررسيد اولين قسط 12/3/88
تعداد اقساط 10 ماه
فاصله بين اقساط 1

نتيجه محاسبات به اين شرح مي شود
وام = 60,000,000
اصل قسط 1 = 6,000,000
سود قسط 1 = 650,000
تاريخ پرداخت قسط = 1388/3/12

وام = 54,000,000
اصل قسط 2 = 6,000,000
سود قسط 2 = 585,000
تاريخ پرداخت قسط = 1388/4/12

وام = 48,000,000
اصل قسط 3 = 6,000,000
سود قسط 3 = 520,000
تاريخ پرداخت قسط = 1388/5/12

وام = 42,000,000
اصل قسط 4 = 6,000,000
سود قسط 4 = 455,000
تاريخ پرداخت قسط = 1388/6/12

وام = 36,000,000
اصل قسط 5 = 6,000,000
سود قسط 5 = 390,000
تاريخ پرداخت قسط = 1388/7/12

وام = 30,000,000
اصل قسط 6 = 6,000,000
سود قسط 6 = 325,000
تاريخ پرداخت قسط = 1388/8/12

وام = 24,000,000
اصل قسط 7 = 6,000,000
سود قسط 7 = 260,000
تاريخ پرداخت قسط = 1388/9/12

وام = 18,000,000
اصل قسط 8 = 6,000,000
سود قسط 8 = 195,000
تاريخ پرداخت قسط = 1388/10/12

وام = 12,000,000
اصل قسط 9 = 6,000,000
سود قسط 9 = 130,000
تاريخ پرداخت قسط = 1388/11/12

وام = 6,000,000
اصل قسط 10 = 6,000,000
سود قسط 10 = 65,000
تاريخ پرداخت قسط = 1388/12/12

===============================
جمع کل سود خالص = 3,575,000
مبلغ وام با سود = 63,575,000

و سود شش ماهه وام به شرح زير مي شود
سود شش ماهه اول1388 = 2,210,000
سود شش ماهه دوم1388 = 1,365,000

جمع سود = 3,575,000

حالا مشکل اينجاست که سود شش ماهه اول بايد به اندازه 18 روز از سود 12/07/88 (قسط شماره 5) اضافه گردد و همچنين به اندازه 18 روز از سود قسط 12/07/88 (قسط شماره 5)کسر گردد. يعني


سود 18 روز= 390.000*18/31


سود 18 روز + سود شش ماهه اول = سود خالص شش ماهه اول سال 88


سود 18 روز – سود قسط 5 = سود قسط 5

در اين صورت بايد سود هاي شش ماهه اول و دوم سال 88 به شرح زير باشند
سود شش ماهه اول1388 = 2.436.451
سود شش ماهه دوم1388 = 1.138.549

جمع سود = 3,575,000

اين مشکل هم قابل حل است در صورتي که فاصله بين اقساط فقط يک باشد و در صورتي که بيشتر باشد ...... مثلا

مبلغ وام 60.000.000 ريال
نرخ وام 13 درصد
سررسيد اولين قسط 12/3/88
تعداد اقساط 60 ماه
فاصله بين اقساط 10

نتيجه محاسبات به شرح زير مي شود:
وام = 60,000,000
اصل قسط 1 = 10,000,000
سود قسط 1 = 6,500,000
تاريخ پرداخت قسط = 1388/12/12

وام = 50,000,000
اصل قسط 2 = 10,000,000
سود قسط 2 = 5,416,667
تاريخ پرداخت قسط = 1389/10/12

وام = 40,000,000
اصل قسط 3 = 10,000,000
سود قسط 3 = 4,333,333
تاريخ پرداخت قسط = 1390/8/12

وام = 30,000,000
اصل قسط 4 = 10,000,000
سود قسط 4 = 3,250,000
تاريخ پرداخت قسط = 1391/6/12

وام = 20,000,000
اصل قسط 5 = 10,000,000
سود قسط 5 = 2,166,667
تاريخ پرداخت قسط = 1392/4/12

وام = 10,000,000
اصل قسط 6 = 10,000,000
سود قسط 6 = 1,083,333
تاريخ پرداخت قسط = 1393/2/12

===============================
جمع کل سود خالص = 22,750,000
مبلغ وام با سود = 82,750,000


و سود شش ماهه وام به شرح زير مي شود
سود شش ماهه دوم1388 = 6,500,000
سود شش ماهه دوم1389 = 5,416,667
سود شش ماهه دوم1390 = 4,333,333
سود شش ماهه اول1391 = 3,250,000
سود شش ماهه اول1392 = 2,166,667
سود شش ماهه اول1393 = 1,083,333

جمع سود = 22,750,000

حالا چگونه سود شش ماهه اول سال 89 يا 90 و يا شش ماهه دوم سال 91 يا 91 و ... را دقيقا حساب کنم؟:عصبانی++:

قدرت برنامه نويسي و طراحي الگوريتم خود را بسنجيد و راه حلي ارائه کنيد چون واقعاً سردر گم شدم و تا همين جا هم که نوشتم بنظر خودم خيلي هم شده!!!!!!!:متفکر:

merced
پنج شنبه 15 مرداد 1388, 23:29 عصر
تا حالا حتماً به جوابت رسيدي. سوال اول من اينه كه شما داري قسط به قسط سود رو مي گيري چه نيازي داري سود شش ماه به شش ماه رو داشته باشي.
به ازاي هر ركورد قسط شما اين فيلد ها رو داري
شماره قسط - سررسيد- مبلغ اصل قسط - سود - كارمزد - ديركرد- تاريخ پرداخت.
خوب سودها رو با هم جمع كن.
در ثاني شما مگه سود رو روز شمار حساب نمي كنيد؟

مبلغ سود در يك بازه زماني بصورت روز شمار:

(تعداد روز) * ( 36500 / (مبلغ قسط * درصد سود) )

من متن رو خوندم ولي متوجه نشدم دقيقاً چي مي خواي. يعني شم كه سود رو مي توني به ازاي هر قسط بدست بياري و حساب ميكني براي شش ماه هم مي شه جمع اونا !!!!‌

K.Mohammadreza
جمعه 16 مرداد 1388, 07:40 صبح
اتفاقا هنوز به جواب مورد نظرم نرسيدم اگه منظور منو درست درک نکرده سري به تاپيک "راهي بهتر براي گزارش سازي" در همين مبحث (مباحث عمومي دلفي و پاسکال) بزنيد شايد اونجا بتونيد منظور منو درک کنيد. با تشکر از جوابتان