Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void go_Click(object sender, EventArgs e){
- try{
- data.Visible = true;
- double p = double.Parse(pBox.Text);
- if (p < 0){
- MessageBox.Show("Стоимость оборудования не может быть меньше нуля");
- return;
- }
- double a = double.Parse(aBox.Text);
- if (a >= 1){
- MessageBox.Show("Дисконтирующий множитель лежит в пределах [0;1]");
- return;
- }
- double r1 = double.Parse(r1Box.Text);
- double r2 = double.Parse(r2Box.Text);
- if (r1 < 0 || r2 < 0){
- MessageBox.Show("Коэффициенты функции обслуживания не могут быть меньше нуля");
- return;
- }
- double q1 = double.Parse(q1Box.Text);
- if (q1 < 0){
- MessageBox.Show("Ликвидная стоимость не может быть меньше нуля");
- return;
- }
- List<double[]> table = new List<double[]>();
- for (int i = 0; ; i++){
- double[] tmp = new double[6];
- tmp[0] = i + 1;
- double tmp_sum = 0;
- for (int j = 0; j < tmp[0]; j++)
- tmp_sum += Math.Pow(a, j) * r_t(r1, r2, j);
- tmp[1] = tmp_sum;
- tmp[2] = Math.Pow(a, tmp[0]) * (p - q_t(q1, tmp[0]));
- tmp[3] = tmp[1] + tmp[2];
- tmp[4] = 1 - Math.Pow(a, tmp[0]);
- tmp[5] = 1.0 / tmp[4] * tmp[3];
- table.Add(tmp);
- if (i > 0 && table[i][5] > table[i - 1][5]) break;
- }
- FileStream fs = new FileStream("output.txt", FileMode.OpenOrCreate, FileAccess.Write);
- StreamWriter sw = new StreamWriter(fs);
- sw.WriteLine("N\tP(0)");
- sw.WriteLine(" ");
- data.RowCount = table.Count;
- data.ColumnCount = 6;
- data.Columns[0].HeaderText = "N";
- data.Columns[1].HeaderText = "Sum(a^i*r(i))";
- data.Columns[2].HeaderText = "a^N*(p-q(N))";
- data.Columns[3].HeaderText = "Sum(a^i*r(i))+a^N*(p-q(N))";
- data.Columns[4].HeaderText = "1-a^N";
- data.Columns[5].HeaderText = "P(0)";
- for (int i = 0; i < table.Count; i++){
- for (int j = 0; j<6; j++)
- data[j, i].Value = Math.Round(table[i][j], 3);
- sw.WriteLine(Math.Round(table[i][0], 3) + "\t" + Math.Round(table[i][5], 3));
- }
- sw.WriteLine(" ");
- sw.WriteLine("Минимальные затраты Pmin = " + Math.Round(table[table.Count - 2][5], 3) + " при периоде замены N = " + Math.Round(table[table.Count - 2][0], 3) + " мес");
- sw.Close();
- fs.Close();
- }
- catch (Exception ex){
- MessageBox.Show("Ошибка: " + ex.Message);
- }
- }
- double r_t(double r1,double r2,double t){
- return r1 - r2 / (t + 1.0);
- }
- double q_t(double q1,double t){
- return q1 / (t + 1.0);
- }
Advertisement
Add Comment
Please, Sign In to add comment