Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
hil400k
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 68
#1

исключительные ситуации

09.06.2013, 23:48. Просмотров 443. Ответов 8
Метки нет (Все метки)

почему не работает??
как надо??

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
100
101
102
103
#include<iostream>
#include<conio.h>
using namespace std;
 
template<class T> class Vector
{
private:
    int pozition;
    int size;
    T *data;
public:
    int returnSize();
    Vector(){}
    Vector(int s){ 
        size=s; pozition=0;
        data=new T[size];
    };
~Vector()
{ 
 delete data;
};
    
    void begin(T);
    void add(T);
    T operator[](int);
    void display();
};
 
//-------------------------------------------------------------------------------------------
 
template<class T>void Vector<T>::display()
{ for(int i=0;i<pozition;i++)
{ cout<<data[i]<<endl;}
}
 
//-------------------------------------------------------------------------------------------
 
template<class T>int Vector<T>::returnSize()
{ return size; }
 
//------------------------------------------------------------------------------------------
 
template<class T>T Vector<T>::operator[](int poz)   //ЗДЕСЬ!ЗДЕСЬ!ЗДЕСЬ!
{try{
    if(poz>=0 && poz<=pozition)
    return data[poz];
    else
    { throw 1; }
}
catch(int)
{cout<<"Error"<<endl;
}
 
 
}
 
 
//-----------------------------------------------------------------------------------------
 
template<class T>void Vector<T>::add(T Object)
{   
    *(data+pozition)=Object;
    pozition++;
    
}
 
//-----------------------------------------------------------------------------------------
 
template<class T>void Vector<T>::begin(T Object)
{
    T* data2=new T[size];
    
    for(int i=0,k=0;i<size;i++,k++)
    {
        data2[i]=data[k];
        
    }
    data=new T[size+1];
    data[0]=Object;
    
    for(int i=1,j=0;i<=(size);i++,j++)
    {
        data[i]=data2[j];
        
    }
    pozition++;
    size=(size+1);
}
 
//----------------------------------------------------------------------------------------
 
void main()
{  int c=9;
    Vector<int> M(4);
    M.add(9);
    M.add(5);
    M.begin(3);
    M.add(7);
    M.display();
    cout<<M[9];
    _getch();
 
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2013, 23:48
Ответы с готовыми решениями:

Исключительные ситуации
Почему программа не работает?? Исключительная ситуация возникающая при деление...

исключительные ситуации
Описать и реализовать функцию анализа номера телефона, обработайте ошибку...

Исключительные ситуации
Надо сделать так, чтоб при вводе чарового символа в итовый вектор выводило...

исключительные ситуации
Подскажите, как сделать переполнение в этой задаче: Создать класс для хранения...

Исключительные ситуации
Функция должна выполнять проверку параметров, передаваемых и генерировать...

8
DU
1486 / 1132 / 164
Регистрация: 05.12.2011
Сообщений: 2,279
10.06.2013, 00:02 #2
надо голову включать. и дебагер осваивать.
все написано криво и косо.
помимо этого в вектор я так понял воткнули 4 элемента, а пытаетесь вывести значение с индексом 9. сами же там бросаете исключение, если индекс не соответствует размеру.
0
hil400k
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 68
10.06.2013, 00:12  [ТС] #3
ну так я и хочу проверить исключение

Добавлено через 1 минуту
меня интересует только почему исключение не работает так как нужно
а на счет кривизны написания я знаю
0
DU
1486 / 1132 / 164
Регистрация: 05.12.2011
Сообщений: 2,279
10.06.2013, 00:16 #4
оно работает согласно правилам языка. все корректно.
а что вам нужно - этого никто не знает.
0
hil400k
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 68
10.06.2013, 00:18  [ТС] #5
мне нужно , чтобы кроме этой строки("Error" ) в блоке catch , если я ввожу неправильный индекс , больше ничего не выводилось на экран
0
DU
1486 / 1132 / 164
Регистрация: 05.12.2011
Сообщений: 2,279
10.06.2013, 00:22 #6
тогда этот трай кетч нужно ставить вокруг вызова

C++
1
2
3
4
5
6
7
8
try
{
 cout<<M[9];
}
catch (int)
{
   std::cout << "Error" << std::endl;
}
а не внутри оператора []
1
hil400k
0 / 0 / 0
Регистрация: 06.01.2013
Сообщений: 68
10.06.2013, 00:28  [ТС] #7
ну это так , но если внутри оператора [] у меня будет не 9 ?
0
DU
1486 / 1132 / 164
Регистрация: 05.12.2011
Сообщений: 2,279
10.06.2013, 00:48 #8
что значит не 9. а сколько? и что от этого поменяется?
если внутри функции operator [] бросается исключение, то начиная с этого момента начинается раскрутка стека. код, который стоит за оператором throw не выполняется. выполнение программы идет по особому сценарию. если на пути раскрутки стека встретится обработчик исключения, то его код и будет вызван.
формулируйте свои мысли четче. ничего не понятно чего вы ожидаете, чего хотите и т.п.
0
Pakisan
14 / 14 / 10
Регистрация: 04.01.2013
Сообщений: 61
10.06.2013, 00:53 #9
DU все правильно сделал

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
try
{
 cout<<M[9];
}
catch (int)
{
   std::cout << "Error" << std::endl;
}
а у себя измени на:
C++
1
2
3
4
5
6
7
template<class T>T Vector<T>::operator[](int poz)
{
    if(poz>=0 && poz<=pozition)
      return data[poz];
    else
      throw 1;
}
0
10.06.2013, 00:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2013, 00:53

Исключительные ситуации
Доброго времени суток. Возникла такая проблема. Никак не могу разобраться с...

Исключительные ситуации
Как обработать исключительную ситуацию,когда переменная описана как int,к...

обработать исключительные ситуации
Функция вычисляет корень квадратного уравнения ax2+bx+c=0 Нужно обработать...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru