8 / 8 / 6
Регистрация: 17.09.2012
Сообщений: 144
1

Исключения: индекс массива

22.02.2014, 21:16. Показов 1221. Ответов 3
Метки нет (Все метки)

Суть такова: нужно написать прогу, контролирующую индексы, которые выходят за пределы массива и генерирует исключения. В ошибке должна быть инфа о значении индекса, приведшего к сбою. Что-то накалякал, но я не совсем понял суть задания. В общем, помогите-объясните-покажите, пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
using namespace std;
 
#define N 255 
 
int main() {
    setlocale(LC_ALL, "RUS");
    int  *mass, number_of_elem;
    mass = new int[N];
    for(int i = 0; i < N; i++){
        mass[i] = i+1;
    }
    cout << "Insert the number of the element" << endl;
    cin >> number_of_elem;
    try {
        if((number_of_elem) < 1 || (number_of_elem) > N) { throw 1; }
        else { cout << mass[number_of_elem-1] << endl; }
    }
    catch(int) { cout << "Error - "<< number_of_elem <<endl; }
    system("pause");
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.02.2014, 21:16
Ответы с готовыми решениями:

В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс 4, третий индекс 5
В строке первый символ получает индекс 1, последний индекс 2, второй индекс 3, предпоследний индекс...

Поменять местами элементы массива А, имеющего нечётный индекс, на элементы массива В, имеющие чётный индекс, и найти минимальные элементы Амах и В мах
даны два массива А и В по 20 элементов в каждом. Поменять местами элементы массива А, имеющего...

Определить индекс минимального и индекс максимального значений массива
Дан одномерный массив! Определить индекс минимального и индекс максимального значений? Очень...

Поменять местами элементы массива a, имеющие нечётный индекс на элементы массива b, имеющие чётный индекс
дан массив a и b содержащий по 20 элементов каждом.Поменять местами элементы массива a ,имеющие...

3
16261 / 8823 / 2163
Регистрация: 30.01.2014
Сообщений: 15,238
22.02.2014, 22:07 2
Цитата Сообщение от dkg_C Посмотреть сообщение
C++
1
2
3
4
5
try {
    if((number_of_elem) < 1 || (number_of_elem) > N) { throw 1; }
    else { cout << mass[number_of_elem-1] << endl; }
}
catch(int) { cout << "Error - "<< number_of_elem <<endl; }
Я бы этот кусок переделал так (код не полный, только иллюстрация):
Кликните здесь для просмотра всего текста
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
#include <stdexcept>
 
class array_out_of_range
    : public std::out_of_range
{
public:
    array_out_of_range(std::string const & err, size_t idx)
        : std::out_of_range(err), idx_(idx)
    { }
 
    size_t index() const
    {
        return idx_;
    }
 
private:
    size_t idx_;
};
 
int main()
{
    try
    {
        //....
        if(number_of_elem < 1 || number_of_elem > N)
        {
            throw array_out_of_range("array index out of range", number_of_elem);
        }
    }
    catch(array_out_of_range const & e)
    {
        std::cout << "error: " << e.what() << ", index: " << e.index() << std::endl;
    }
    return 0;
}
1
8 / 8 / 6
Регистрация: 17.09.2012
Сообщений: 144
22.02.2014, 22:21  [ТС] 3
Что-то понял, если могли бы вы, приведите код не только как иллюстрацию, ибо мысль прослеживается, но с классами я try - catch еще не пробовал. Заодно и пойму
0
16261 / 8823 / 2163
Регистрация: 30.01.2014
Сообщений: 15,238
22.02.2014, 22:40 4
Цитата Сообщение от dkg_C Посмотреть сообщение
Заодно и пойму
Нужно добавить в мой пример уже написанный тобой код. Ввод индекса и вывод найденного элемента. Остальное все есть. Я убежден, что решая за тебя задание полностью я не помогаю тебе, а наоброт, мешаю. Поэтому лучший способ понять - попробовать и решить задние самостоятельно
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.02.2014, 22:40
Помогаю со студенческими работами здесь

Поменять местами элементы массива А, имеющие нечетный индекс, на элементы массива В, имеющие четный индекс
Недавно начал изучать Delphi. Все шло хорошо, пока не наткнулся на одну проблемку. &quot;Даны два...

Поменять местами элементы массива А, имеющие нечетный индекс, на элементы массива В, имеющие четный индекс
Даны два массива А и В по 20 элементов в каждом. Поменять местами элементы массива А, имеющие...

Найти максимальный элемент массива и его индекс. Максимальный элемент я нашел , не получается вывести индекс
var i,max: integer; x: array of integer; begin randomize; max:=x; for i:=1 to 5 do begin...

Организация собственного исключения и передача в него исходного исключения
Для обработки исключений при работе с БД я создал собственное исключение: public class...

Индекс массива является недопустимым для этого массива - MathCAD
Не могу понять в чем проблема, делал по разному все равно не выходит.

Madcad-этот индекс массива недопустим для данного массива
не могу понять в чем причина, почему он его не задает


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru