Code:
public double Pretvori (string args)
{
double result;
if (args.Length == 0)
{
result = Double.NaN;
}
string[] Kam = args.Split('√');
if (Kam.Count() > 2)
{
throw new Exception("U izrazu mora da postoji samo jedan simbol '√'");
}
double n, t;
if (string.IsNullOrEmpty(Kam[0]))
{
n = 1;
if (args.Contains('√'))
{
result = n * Math.Sqrt(Double.Parse(Kam[1]));
}
}
else
{
if (!Double.TryParse(Kam[0], out n))
{
throw new Exception("Tekst levo od simbola '√' nije broj");
}
if (Kam.Count() == 1)
{
result = n;
}
else
{
if (string.IsNullOrEmpty(Kam[1]))
{
throw new Exception("Mora da postoji broj desno od simbola '√'");
}
if (!Double.TryParse(Kam[1], out t))
{
throw new Exception("Tekst desno od simbola '√' nije broj");
}
result = n * Math.Sqrt(Double.Parse(Kam[1]));
return result;
}
}
}
private void Resimnogougao_Click(object sender, EventArgs e)
{
double cu1;
double nm1;
double am1;
double Om1;
double Pm1;
double rm1;
double Rom1;
double ums1;
double bdm1;
double.TryParse(nm.Text, out nm1);
double.TryParse(Om.Text, out Om1);
double.TryParse(Pm.Text, out Pm1);
double.TryParse(rm.Text, out rm1);
double.TryParse(Rom.Text, out Rom1);
double.TryParse(ums.Text, out ums1);
double.TryParse(bdm.Text, out bdm1);
double.TryParse(cu.Text, out cu1);
bool m1 = double.TryParse(nm.Text, out nm1);
bool m2 = double.TryParse(am.Text, out am1);
bool m3 = double.TryParse(Om.Text, out Om1);
bool m4 = double.TryParse(Pm.Text, out Pm1);
bool m5 = double.TryParse(rm.Text, out rm1);
bool m6 = double.TryParse(Rom.Text, out Rom1);
bool m7 = double.TryParse(ums.Text, out ums1);
bool m8 = double.TryParse(bdm.Text, out bdm1);
bool m9 = double.TryParse(cu.Text, out cu1);
Pretvori(am.Text);
Pretvori(Om.Text);
Pretvori(Pm.Text);
Pretvori(rm.Text);
Pretvori(Rom.Text);
Pretvori(ums.Text);
Pretvori(bdm.Text);
Pretvori(cu.Text);
if (m1 && m2)
{
Om1 = nm1 * am1;
goto o;
}
if (m1 && m3)
{
am1 = Om1 / nm1;
goto o;
}
if (m1 && m4)
{
cu1 = 360 / nm1;
am1 = Math.Sqrt(2 * Pm1 / nm1 / Math.Sin(cu1 * Math.PI / 180)) * 2 * Math.Sin(cu1 / 2 / 180 * Math.PI);
goto o;
}
if (m1 && m5)
{
cu1 = 360 / nm1;
am1 = rm1 * 2 * Math.Tan(cu1 / 360 * Math.PI);
goto o;
}
if (m1 && m6)
{
cu1 = 360 / nm1;
am1 = Rom1 * 2 * Math.Sin(cu1 / 360 * Math.PI);
goto o;
}
if (m1 && m7)
{
MessageBox.Show("Nema dovoljno podataka za izracunavanje parametara");
goto kr;
}
if (m1 && m8)
{
MessageBox.Show("Nema dovoljno podataka za izracunavanje parametara");
goto kr;
}
if (m1 && m9)
{
MessageBox.Show("Nema dovoljno podataka za izracunavanje parametara");
goto kr;
}
if (m2 && m3)
{
nm1 = Om1 / am1;
goto o;
}
if (m2 && m4)
{
nm1 = 4 * Pm1 / (am1 * am1 * Math.Sqrt(3));
goto o;
}
if (m2 && m5)
{
cu1 = Math.Atan(am1 / (2 * rm1)) / Math.PI * 360;
nm1 = 360 / cu1;
goto o;
}
if (m2 && m6)
{
cu1 = Math.Asin(am1 / (2 * Rom1)) * 360 / Math.PI;
nm1 = 360 / cu1;
goto o;
}
if (m2 && m7)
{
nm1 = 360 / (180 - ums1);
goto o;
}
if (m2 && m8)
{
nm1 = (3 + Math.Sqrt(9 + 8 * bdm1)) / 2;
goto o;
}
if (m2 && m9)
{
nm1 = 360 / cu1;
goto o;
}
if (m3 && m4)
{
MessageBox.Show("Nema dovoljno podataka da se ostale vrednosti odrede analiticki");
goto kr;
}
if (m3 && m5)
{
MessageBox.Show("Nema dovoljno podataka da se ostale vrednosti odrede analiticki");
goto kr;
}
if (m3 && m6)
{
MessageBox.Show("Nema dovoljno podataka da se ostale vrednosti odrede analiticki");
goto kr;
}
if (m3 && m7)
{
nm1 = 360 / (180 - ums1);
am1 = Om1 / nm1;
goto o;
}
if (m3 && m8)
{
nm1 = (3 + Math.Sqrt(9 + 8 * bdm1)) / 2;
am1 = Om1 / nm1;
goto o;
}
if (m3 && m9)
{
nm1 = 360 / cu1;
am1 = Om1 / nm1;
goto o;
}
if (m4 && m5)
{
MessageBox.Show("Nema dovoljno podataka da se ostale vrednosti odrede analiticki");
goto kr;
}
if (m4 && m6)
{
MessageBox.Show("Nema dovoljno podataka da se ostale vrednosti odrede analiticki");
goto kr;
}
if (m4 && m7)
{
nm1 = 360 / (180 - ums1);
am1 = Math.Sqrt(4 * Pm1 / nm1 * Math.Tan(Math.PI / nm1));
goto o;
}
if (m4 && m8)
{
nm1 = (3 + Math.Sqrt(9 + 8 * bdm1)) / 2;
am1 = Math.Sqrt(4 * Pm1 / nm1 * Math.Tan(Math.PI / nm1));
goto o;
}
if (m4 && m9)
{
nm1 = 360 / cu1;
am1 = Math.Sqrt(4 * Pm1 / nm1 * Math.Tan(Math.PI / nm1));
goto o;
}
if (m5 && m6)
{
nm1 = Math.PI / Math.Acos(Rom1 / rm1);
am1 = 2 * Math.Sqrt(Rom1 * Rom1 - rm1 * rm1);
goto o;
}
if (m5 && m7)
{
nm1 = 360 / (180 - ums1);
cu1 = 360 / nm1;
am1 = 2 * rm1 * Math.Tan(cu1 * Math.PI / 360);
goto o;
}
if (m5 && m8)
{
nm1 = (3 + Math.Sqrt(9 + 8 * bdm1)) / 2;
cu1 = 360 / nm1;
am1 = 2 * rm1 * Math.Tan(cu1 * Math.PI / 360);
goto o;
}
if (m5 && m9)
{
am1 = 2 * rm1 * Math.Tan(cu1 * Math.PI / 360);
goto o;
}
if (m6 && m7)
{
nm1 = 360 / (180 - ums1);
cu1 = 360 / nm1;
am1 = 2 * Rom1 * Math.Sin(cu1 * Math.PI / 360);
goto o;
}
if (m6 && m8)
{
nm1 = (3 + Math.Sqrt(9 + 8 * bdm1)) / 2;
cu1 = 360 / nm1;
am1 = 2 * Rom1 * Math.Sin(cu1 * Math.PI / 360);
goto o;
}
if (m6 && m9)
{
am1 = 2 * Rom1 * Math.Sin(cu1 * Math.PI / 360);
goto o;
}
if (m7 && m8)
{
MessageBox.Show("Nema dovoljno podataka za odredjivanje ostalih paremetara mnogougla");
goto kr;
}
if (m7 && m9)
{
MessageBox.Show("Nema dovoljno podataka za odredjivanje ostalih paremetara mnogougla");
goto kr;
}
if (m8 && m9)
{
MessageBox.Show("Nema dovoljno podataka za odredjivanje ostalih paremetara mnogougla");
goto kr;
}
o:
{
cu1 = 360 / nm1;
ums1 = (nm1 - 2) * 180 / nm1;
bdm1 = nm1 * (nm1 - 3) / 2;
Om1 = nm1 * am1;
Rom1 = am1 / (2 * Math.Sin((cu1 * Math.PI / 180) / 2));
rm1 = am1 / (2 * Math.Tan((cu1 * Math.PI / 180) / 2));
Pm1 = nm1 * am1 * rm1 / 2;
}
if ((nm1 % 1 != 0)||(bdm1 % 1 !=0)||(nm1<3))
{
MessageBox.Show("Ne postoji pravilan mnogougao sa unesenim vrednostima");
return;
}
kr:
{
cu.Text = cu1.ToString();
nm.Text = nm1.ToString();
am.Text = am1.ToString();
Om.Text = Om1.ToString();
Pm.Text = Pm1.ToString();
rm.Text = rm1.ToString();
Rom.Text = Rom1.ToString();
ums.Text = ums1.ToString();
bdm.Text = bdm1.ToString();
}
}
Napravio sam funkciju pozivam je ali opet nece da funkcionise na isti nacin kao sto sam i u prethodnom postu napisao, ubacio sam i ostatak koda, da vidite da li je greska mozda u ostatku koda, ali cisto sumljam.
[Ovu poruku je menjao panterloki dana 20.05.2013. u 16:36 GMT+1]