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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dkg_C
8 / 8 / 1
Регистрация: 17.09.2012
Сообщений: 144
#1

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

22.02.2014, 21:16. Просмотров 354. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 21:16     Исключения: индекс массива
Посмотрите здесь:

C++ индекс массива
C++ Выход за пределы массива, обработка исключения
C++ указать индекс второго массива, при котором оба массива перестают совпадать
Вывести индекс элемента массива C++
C++ Индекс макс. элемента массива
Напишите программу, которая контролирует индексы, выходящие за пределы массива и генерирует исключения. C++
C++ Индекс массива
Сигнал, Индекс массива C++
Составить программу исключения из массива всех отрицательных чисел C++
C++ Индекс массива символьного типа
Не выводит на экран индекс массива C++
C++ Составить перемешанный индекс массива

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6840 / 4051 / 924
Регистрация: 30.01.2014
Сообщений: 6,855
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;
}
dkg_C
8 / 8 / 1
Регистрация: 17.09.2012
Сообщений: 144
22.02.2014, 22:21  [ТС]     Исключения: индекс массива #3
Что-то понял, если могли бы вы, приведите код не только как иллюстрацию, ибо мысль прослеживается, но с классами я try - catch еще не пробовал. Заодно и пойму
DrOffset
6840 / 4051 / 924
Регистрация: 30.01.2014
Сообщений: 6,855
22.02.2014, 22:40     Исключения: индекс массива #4
Цитата Сообщение от dkg_C Посмотреть сообщение
Заодно и пойму
Нужно добавить в мой пример уже написанный тобой код. Ввод индекса и вывод найденного элемента. Остальное все есть. Я убежден, что решая за тебя задание полностью я не помогаю тебе, а наоброт, мешаю. Поэтому лучший способ понять - попробовать и решить задние самостоятельно
Yandex
Объявления
22.02.2014, 22:40     Исключения: индекс массива
Ответ Создать тему
Опции темы

Текущее время: 04:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru