Обработка исключений при расчете формулы - 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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.583 из 5