Обработка исключений при расчете формулы - C#
Формулировка задачи:
День добрый, ткните плиз носом где я что не так сделал
Суть в чем, нужно найти значения функций и записать их в различные массивы и произвести обработку искл ситуаций. Так вот почему-то не работает обработка искл ситуаций, а именно когда рез функции NaN. Пытаюсь заменить NAN на 0 но все равно получаю NaN
Заранее спс)
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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int i, j, q, iskl, n;
double x;
n = 0;
for (x = -3; x <= 7; x += 0.5) //считаем кол-во эл. массивов
{
n++;
}
double[] a = new double[n];
double[] b = new double[n];
Random rand = new Random();
double[] c = new double[n];
i = 0;
iskl = 0;
for (x = -3; x <= 7; x += 0.5) //операции с массивом 1
{
try
{
checked { a[i] = Math.Cos((x - 1) / (x + 1)); }
}
catch (NotFiniteNumberException) //NaN
{
a[i] = 0;
++iskl;
}
catch (DivideByZeroException) //деление на ноль
{
a[i] = 0;
++iskl;
}
catch (Exception) //Остальные ошибки
{
a[i] = 0;
++iskl;
}
finally
{
richTextBox1.AppendText(("A [" + Convert.ToString(i + 1) + "] = " + String.Format("{0:0.00}", a[i]) + Environment.NewLine));
++i;
}
}
for (j = 0; j < n; j++) //второй массив
{
b[j] = rand.Next(-100, 100);
richTextBox2.AppendText(("B [" + Convert.ToString(j+1) + "] = " + Convert.ToString(b[j]) + Environment.NewLine));
}
for (q = 0; q < n; q++) //трейтий массив
{
try
{
c[q] = Math.Sqrt(a[q] + b[q]);
}
catch (NotFiniteNumberException) //NaN
{
c[q] = 0;
++iskl;
}
catch (IndexOutOfRangeException) //при переполнении массива выходим из его
{
q = n;//выходим из цикла
++iskl;
}
catch (Exception) //деление на ноль и другие ошибки
{
c[q] = 0;
++iskl;
}
finally
{
richTextBox3.AppendText(("С [" + Convert.ToString(q+1) + "] = " + String.Format("{0:0.00}", c[q]) + Environment.NewLine));
}
}
label4.Text = Convert.ToString(iskl);
}
}
}Решение задачи: «Обработка исключений при расчете формулы»
textual
Листинг программы
var a = Math.Cos(double.PositiveInfinity);