Код: Выделить всё
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 Пивк1
{
public partial class Form1 : Form
{
string s1,s2,s3,s4;
int n1=0;
double n2=0;
double tii=0;
double tob=0;
public Form1()
{
InitializeComponent();
}
double step(double a, int b)
{
double p = a;
for (int i = 1; i < b; i++)
p = p * b;
return p;
}
int factor(int x)
{
if (x == 0) return 1;
return x * factor(x - 1);
}
private void startbutton_Click(object sender, EventArgs e)
{
startbutton.Enabled = false;
s1 = textBox1.Text;
n1 = Convert.ToInt32(s1);
s2 = textBox2.Text;
tii = Convert.ToDouble(s2);
s1 = textBox3.Text;
tob = Convert.ToDouble(s1);//43 строка
//bool isSuccess = double.TryParse(s3, out tob);
s1 = tob.ToString();
textBox13.Text = s1;
s4 = textBox4.Text;
n2 = Convert.ToDouble(s4);
//проверка ввода
//s1 = tii.ToString();
//textBox13.Text=s1;
//s2 = tii.ToString();
//textBox6.Text = s2;
//s1 = tob.ToString();
//textBox13.Text = s3;
//s1 = n2.ToString();
//textBox8.Text = s4;
double po=0;
double ro;
ro=n2*tob/tii;
double rb = n2 * tob;
//s1 = tob.ToString();
//textBox13.Text = s1;
double wq=0;
double aq=0;
double az=0;
//1)Вероятность того, что все каналы СМО свободны
for (int k = 0; k < n1 ; k++)
{
aq = step(ro, k) / factor(k);
wq = wq + aq;
}
az = step(ro, n1) / ((factor(n1 - 1)) * (n1 - ro));
po = 1/(wq+az);
//вывод
s1 = po.ToString();
textBox5.Text=s1;
//3)Вероятность того, что все каналы СМО заняты (k >= n)
double pn;
pn = po * ((step(ro,n1)) / ((factor(n1 - 1)) * (n1 - ro)));
//вывод
s1 = pn.ToString();
textBox6.Text = s1;
//6)Среднее время ожидания требованием начала обслуживания в СМО
double tog;
tog = pn * tob / (n1 - ro);
//вывод
s1 = tog.ToString();
textBox7.Text = s1;
//7)Среднее длина очереди
double mog;
double aa;
aa=1-ro/n1;
mog = ro * pn / n1 * (step(aa,2));
//вывод
s1 = mog.ToString();
textBox8.Text = s1;
//9)Среднее число каналов, свободных от обслуживания
double no = 0;
for (int k = 1; k < n1 ; k++)
{
no = no + (step(ro,k) * po * (n1 - k)) / factor(k);
}
//вывод
s1 = no.ToString();
textBox9.Text = s1;
//Коэффициент простоя каналов
double kp;
kp = no / n1;
//вывод
s1 = kp.ToString();
textBox10.Text = s1;
//Среднее число каналов, занятых обслуживанием
double nz;
nz = n1 - no;
//вывод
s1 = nz.ToString();
textBox11.Text = s1;
//Коэффициент загрузки каналов
double kz;
kz = nz / n1;
//вывод
s1 = kz.ToString();
textBox12.Text = s1;
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(Char.IsDigit(e.KeyChar)) && !((e.KeyChar == '.') && (textBox1.Text.IndexOf(".") == -1)))
{
if (e.KeyChar != (char)Keys.Back)
{
e.Handled = true;
}
}
}
}
}
Проблема в 43 строке. Там закоментил ещё 1 вариант. Он позволяет вводить но выдаёт 0.