Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Обработка исключений - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Наследование классов http://www.cyberforum.ru/cpp-beginners/thread1177379.html
Создать класс-родитель «ученик», класс-наследник «ученик и его оценки» (по некоторым предметам), и класс-наследник «журнал». Есть прога написанная структурой #include <stdio.h> #include...
C++ Массив как член класса Почему мне GCC выдаёт ошибку компиляции, что это zero-sized array ? struct Base { const char* d{"f", "f"}; }; ISO C++ forbids zero-size array 'd' const char* d{"f", "f"}; ... http://www.cyberforum.ru/cpp-beginners/thread1177374.html
C++ Рекурсия. Удаление лишних пробелов
Доброго времени суток! Подскажите как реализовать с помощью рекурсии задачу: описать функцию, которая удаляет из строки все лишние пробелы.
Передача символьного массива в качестве аргумента C++
#include <iostream> using namespace std; void mazeTraverse( char maze ); int main() { char a= { "############", "#...#......#", ...
C++ Найти ошибку и оформить вывод массива, как функцию http://www.cyberforum.ru/cpp-beginners/thread1177338.html
Доброго времени суток! Помогите найти ошибку. И оформить вывод массива как функцию. Заранее благодарю. #include "stdafx.h" #include <math.h> #include <iostream> using namespace std; int...
C++ Сделать либо так, чтобы в файл записывались рандомные матрица и вектор, либо из файла считывать ребят есть вот прога, она заполняет рандомами матрицу и вектор и перемножает. И есть соответственно проги для чтения из файла или записи в файл. Не могу слить в одну. Нужно сделать либо чтобы в файл... подробнее

Показать сообщение отдельно
SimpleSystem
0 / 0 / 0
Регистрация: 26.04.2014
Сообщений: 7

Обработка исключений - C++

15.05.2014, 23:17. Просмотров 468. Ответов 2
Метки (Все метки)

Необходимо создать три массива a, b и с размерами соответственно n1, n2 и n3 (n1=!n2=!n3). В массив а занести значения функции f(x)=ln(1-x), x принадлежит [-1;3], dx=0.2 (при возникновении исключения заносить нули). Массив b заполнить случайными числами (среди них должны быть и отрицательные числа и нули). Массив с: ci = ai+1 – 1/bi-1 , где i, i+1, i-1 - это индексы. Предусмотреть и обработать возникающие при этом исключительные ситуации (деление на ноль, корень из отрицательного числа, арифметическое переполнение, выход за пределы диапазона индексов массива и т.п.).
Помогите пожалуйста, сессию надо закрывать)

Добавлено через 54 минуты
Как пример, есть похожее задание только с 1 массивом. Но я не разбираюсь, поэтому прошу помощи у знающих.
Создать массив произвольной длины, в который записать значения функции f(x) = sqrt(1/x) при x принадлежит [-2; 6], dx = 0,4. Распечатать полученный массив. Предусмотреть обработку возникающих исключительных ситуаций.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <iostream.h>
#include <math.h>
//класс исключения "деление на ноль"
class ZeroDivideException
{
public:
    int idx;
    ZeroDivideException(int i)
    {
        idx = i;
    }
};
//класс исключения "корень из отрицательного числа"
class SqrtException
{
public:
    int idx;
    SqrtException(int i)
    {
        idx = i;
    }
};
//класс исключения "выход за пределы индексов массива"
class IndexException
{
public:
    int idx;
    IndexException(int i)
    {
        idx = i;
    }
};
//функция установки очередного значения массива
void SetValue(double val,int i,int n,double* ar)
{
        if (val==0.0)   //пытаемся делить на ноль
        {
            ar[i] = 0.0;
            throw ZeroDivideException(i);   
        }
        if (val<0) //пытаемся извлечь корень из отриц. числа
        {
            ar[i] = 0.0;
            throw SqrtException(i);
        }
        if (i>=n)       //недопустимый индекс массива
            throw IndexException(i);
        ar[i] = sqrt(1/val);    //нормальная ситуация
}
//функция печати массива
void Print(int i,int n,double* ar)
{
        if (i>=n)       //недопустимый индекс массива
            throw IndexException(i);
        cout<<ar[i]<<' ';
}
 
void main()
{
    int n;
    cout<<"Input n: ";  //вводим границу массива
    cin>>n;
    double* a = new double[n];
    double x = -2.0;
    for (int i=0;x<=6.0;i++,x+=0.4)
    {
        try
        {
            SetValue(x,i,n,a);  //пытаемся сформировать массив
        }
        catch (ZeroDivideException ex) //перехват исключений
        {
            cout<<"Zero divide error in index "<<ex.idx<<endl;
        }
        catch (SqrtException ex)
        {
            cout<<"Sqrt error in index "<<ex.idx<<endl;
        }
        catch (IndexException ex)
        {
            cout<<"Index out of range in index 
"<<ex.idx<<endl;
        }
    }
    for (i=0;i<2*n;i++)     //генерация некорректного доступа
    {
        try
        {
            Print(i,n,a);   //пытаемся распечатать массив
        }
        catch (IndexException ex)   //перехват исключений
        {
            cout<<"Index out of range in index 
"<<ex.idx<<endl;
        }
    }
    cout<<endl;
    delete []a;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru