bftarane
چهارشنبه 21 مرداد 1394, 12:07 عصر
سلام.
لطفاً این تصویر رو ببینید.
134174
خوب من می خوام میزان مصرف بر حسب مترمکعب و همچنین تعرفه رو به عنوان ورودی بگیرم و آب بها رو محاسبه کنم.
آب بها به این صورت محاسبه می شه:
آب بها = آب بهای ردیف قبلی + تعرفه
یعنی اگه آب بها برای 5 متر مکعب 5000 محاسبه شده باشه برای ردیف بعد که 6 متر مکعب باشه باید این 5000 با تعرفه بازه مرتبط با 6 مترمکعب که در اینجا 1200 هست جمع بشه و نتیجه میشه 6200.
حالا مشکل در جایی هست که بازه عوض میشه، حالا نمی دونم چطور باید آخرین آب بهای بازه قبلی رو به دست بیارم. می دونم که باید از روش بازگشتی استفاده بشه ولی در پیاده سازیش مشکل دارم.
این چیزیه که خودم نوشتم ولی نتونستم اون قسمت بازگشتی رو پیاده سازی کنم
using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace abbaha
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_Click(object sender, EventArgs e)
{
}
public void test()
{
int Varabbaha = 0;
int metr = Convert.ToInt32(txt.Text);
if (metr <= 5)
{
Varabbaha = metr * 1000;
}
if (metr >= 6 && metr <= 13)
{
//آخرین آب بهای بازه قبلی یعنی آب بها وقتی متر مکعب برابر با 5
Varabbaha = 5000;
for (int i = 6; i <= 13; i++)
{
if (i <= metr)
{
Varabbaha = Varabbaha + 1200;
}
}
}
if (metr >= 14 && metr <= 20)
{
//آخرین آب بهای بازه قبلی یعنی آب بها وقتی متر مکعب برابر با 13
Varabbaha = 17000;
for (int i = 14; i <= 20; i++)
{
if (i <= metr)
{
Varabbaha = Varabbaha + 3500;
}
}
}
if (metr >= 20)
{
//آخرین آب بهای بازه قبلی
Varabbaha = ;
for (int i = 20; i >=20; i++)
{
if (i <= metr)
{
Varabbaha = Varabbaha + 6700;
}
}
}
lbl_result.Text = Varabbaha.ToString();
}
}
}
البته در پروژه واقعی بازه ها خیلی زیاد هستن بنابراین دستی حساب کردن آخرین آب بهای بازه قبلی کار دشواریه. من سعی کردم تا حد امکان مثال رو ساده کنم تا راحتتر بشه به نتیجه رسید.
لطفاً راهنمایی کنید.
لطفاً این تصویر رو ببینید.
134174
خوب من می خوام میزان مصرف بر حسب مترمکعب و همچنین تعرفه رو به عنوان ورودی بگیرم و آب بها رو محاسبه کنم.
آب بها به این صورت محاسبه می شه:
آب بها = آب بهای ردیف قبلی + تعرفه
یعنی اگه آب بها برای 5 متر مکعب 5000 محاسبه شده باشه برای ردیف بعد که 6 متر مکعب باشه باید این 5000 با تعرفه بازه مرتبط با 6 مترمکعب که در اینجا 1200 هست جمع بشه و نتیجه میشه 6200.
حالا مشکل در جایی هست که بازه عوض میشه، حالا نمی دونم چطور باید آخرین آب بهای بازه قبلی رو به دست بیارم. می دونم که باید از روش بازگشتی استفاده بشه ولی در پیاده سازیش مشکل دارم.
این چیزیه که خودم نوشتم ولی نتونستم اون قسمت بازگشتی رو پیاده سازی کنم
using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace abbaha
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_Click(object sender, EventArgs e)
{
}
public void test()
{
int Varabbaha = 0;
int metr = Convert.ToInt32(txt.Text);
if (metr <= 5)
{
Varabbaha = metr * 1000;
}
if (metr >= 6 && metr <= 13)
{
//آخرین آب بهای بازه قبلی یعنی آب بها وقتی متر مکعب برابر با 5
Varabbaha = 5000;
for (int i = 6; i <= 13; i++)
{
if (i <= metr)
{
Varabbaha = Varabbaha + 1200;
}
}
}
if (metr >= 14 && metr <= 20)
{
//آخرین آب بهای بازه قبلی یعنی آب بها وقتی متر مکعب برابر با 13
Varabbaha = 17000;
for (int i = 14; i <= 20; i++)
{
if (i <= metr)
{
Varabbaha = Varabbaha + 3500;
}
}
}
if (metr >= 20)
{
//آخرین آب بهای بازه قبلی
Varabbaha = ;
for (int i = 20; i >=20; i++)
{
if (i <= metr)
{
Varabbaha = Varabbaha + 6700;
}
}
}
lbl_result.Text = Varabbaha.ToString();
}
}
}
البته در پروژه واقعی بازه ها خیلی زیاد هستن بنابراین دستی حساب کردن آخرین آب بهای بازه قبلی کار دشواریه. من سعی کردم تا حد امکان مثال رو ساده کنم تا راحتتر بشه به نتیجه رسید.
لطفاً راهنمایی کنید.