PDA

View Full Version : ایجاد دفترچه اقساط



mrali.jalali
سه شنبه 02 آبان 1396, 09:15 صبح
سلام
برای ایجاد دفترچه اقساط اگر ده میلیون وام گرفته باشه در 12 قسط ، اقساط ماهیانه میشه 833333.333
اگر بخوام اقساط به صورت 830000 بشه و خرده پول های اقساط روی قسط آخر اعمال شود .
مشکل من با قسمتیه که نمیدونم چطوری رند کنم .

ممنون میشم راهنمایی کنید

رامین مرادی
سه شنبه 02 آبان 1396, 11:18 صبح
یه راه حلی نوشتم. در صورت نیاز میتونید اینو بهینه تر هم کنید. ولی کلیت اینه. هرجاشو متوجه نشدید بگید توضیح بدم



private void button13_Click(object sender, EventArgs e)
{
int num = 10000000;//مبلغ اقساط
int div = 12;//تعداد اقساط
int cout = num / div;//بدیت ؟آوردن مبلغ هر قسط
string s = cout.ToString();
int t=3;//محل شروع رند کردن عدد
//برای مثال 833333 از محل 3 همان سومین رقم خواهد شد 830000
string n = "";
n = s.Substring(0, t - 1);
for(int i=t-1;i<s.Length;i++)
{
if (s.Substring(i , 1) != "0" )//مقدار محل را با صفر مقایسه میکنیم اگه صفر نبود صفر میزاریم
{
if (s.Substring(i , 1) != ".")//این کارو تا رسیدن به اعشار باید انجام بدیم
{
n += "0";
}
else
break;//در صورتی که به اعشار رسیدیم کلا از حلقه خارج میشیم
}
else if (s.Substring(i - 1, 1) == "0")//اگه رقم صفر بود بازم همون صفر رو بهش اضافه میکنیم
{
n += "0";
}
}
MessageBox.Show("مبلغ هر قسط " + n);
MessageBox.Show("مبلغ قسط آخر"+(num-(int.Parse(n) * (div - 1))).ToString());//ابتدا از تعداد اقساط یکی کم میکنیم. و اونو بر رقم بدست امده ضرب میکنیم.و حاصل رو از جمع اقساط کم میکنیم .
//مقدار بدست اومده میشه مبلغ آخرین اقساطمون
}

ژیار رحیمی
سه شنبه 02 آبان 1396, 11:21 صبح
سلام
بعد از بدست اوردن مبلغ هر قسط ،باقیمانده انرا بر 10000 بدست بیار ؛عدد بدست امده(اضافه هر قسط) را در تعداد اقساط ضرب کن.عدد بدست امده را منهای مبلغ وام کن در یک متغییر نگهداری کن.برای قسط بندی ،(وام را منهای مبلغ نگداری شده در متغییر )/تعداد اقساط کن ، هر قسط بصورت رند بدست میاد که میتونی مبلغ اضافات را به قسط اول یا آخر اضافه کنی

var loan = 2500000;//وام
var portionCount = 17;//تعداد اقساط
var numMod = loan >= 1000000 ? 10000 : 1000;
var extraVlaue = (loan / portionCount) % numMod;//اضافات هر قسط
loan -= extraVlaue * portionCount;//کسر مبالغ اضافات از وام
var roundedEachPortion = loan / portionCount;//مبلغ رند هر قسط
roundedEachPortion += (roundedEachPortion % numMod);
var PortionList = new List<decimal>();//لیست اقساط
for (var i = 0; i < portionCount; i++)
{
if (i == portionCount - 1)//قسط آخر
PortionList.Add(roundedEachPortion + extraVlaue);//اضافه کردن مبلغ اضافات به قسط آخر
else PortionList.Add(roundedEachPortion);
}
listBox1.DataSource = PortionList.ToList();

مبلغ 10000 را برای مبلغ وام بیشتر از یک میلیون و برای وام های زیر یک میلیون 1000 ست شده است.
موفق باشی

mrali.jalali
سه شنبه 02 آبان 1396, 15:08 عصر
ممنون از دوستان

من دو کد را بررسی کردم اگر مبلغ وام 2500000 باشه با تعداد قسط 18
در روش اول مبلغ اقساط 130000 و مبلغ قسط ماه اخر 290000 میشه که مبلع قسط اخر بیش از دو برابر ماه های اخره که منظقی نیست .
در روش دوم جمع مبالغ قسط از 2500000 بیشتر میشه . 17 قسط به مبلغ 199445 و ماه اخر 208333 که از سه میلیون بیشترمیشه.
در هر دو روش دو خط اول که مربوط به وام و تعداد قسط رو عوض کردم ولی بقیه کد رو دست نزدم .ممنون اگر باز هم راه حل بدید

ژیار رحیمی
سه شنبه 02 آبان 1396, 15:57 عصر
var loan = 2500000;//وام
var portionCount = 18;//تعداد اقساط
var EachPortion = loan / portionCount;//مبلغ هر قسط
var numMod = EachPortion >= 1000000 ? 10000 : 1000;
var extraVlaue = EachPortion % numMod;//اضافات هر قسط
var PortionList = new List<decimal>();//لیست اقساط
for (var i = 0; i < portionCount; i++)
{
if (i == portionCount - 1)//قسط آخر
PortionList.Add(EachPortion + extraVlaue* portionCount);//اضافه کردن مبلغ اضافات به قسط آخر
else PortionList.Add(EachPortion- extraVlaue);
}
listBox1.DataSource = PortionList.ToList();

مشکل پست اول اصلاح شد و همچنین یک روش دیگه برای محاسبه

محمد رضا فاتحی
سه شنبه 02 آبان 1396, 17:12 عصر
private string[] calmablagh(int mablagh_shahriye, int tedadghest,int initmablagh )
{
double sum = 0;
string[] num = new string[tedadghest];
int firstindex=0;
if(initmablagh!=0)
{
num[0] = (initmablagh);
firstindex = 1;
mablagh_shahriye = mablagh_shahriye -initmablagh);
tedadghest = (int.Parse(tedadghest) - 1).ToString();
}
double y = mablagh_shahriye / tedadghest;
y = y / 1000;
y = Math.Round(y);
y = y * 1000;
for (int i = firstindex; i < tedadghest - 1; i++)
{
num[i] = y.ToString();
sum += y;


}
num[tedadghest - 1] = (mablagh_shahriye - sum).ToString();
return num;
}


اینم کدی که من استفاده می کنم گه شامل مبلغ قسط اول هم هست