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

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

Войти
Регистрация
Восстановить пароль
 
marahyta
0 / 0 / 0
Регистрация: 09.11.2014
Сообщений: 1
#1

Исключение, как класс с полями-параметрами функции - C++

16.11.2014, 19:44. Просмотров 176. Ответов 0
Метки нет (Все метки)

Здравствуйте.
Подскажите, как решить следующую проблему:
Мне нужно создать в функции объект-исключение как класс с полями параметрами, которые были переданы в функцию. Один из этих параметров является экземпляром другого класса. Как правильно скопировать значение этого экземпляра класса в поле создаваемого класса?

Функция:
C++
1
2
3
4
5
6
7
8
9
void function (Progression progression,int n)
{class_with_parameters e;  e.progression1(progression); e.n1=n; if (n<=-1) throw e;
double Sum;
double _denominator=denominator(progression);
if (_denominator==0.0) throw e; 
 
Sum=(progression.members[0]-progression.members[n]*_denominator)/(1-_denominator);
cout<<"Сумма равна "<<Sum<<endl;
}

Создаваемый класс:
C++
1
2
3
4
class class_with_parameters
{public: 
Progression progression1(Progression&);
int n1;};


Описание и конструкторы для класса:
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
class Progression
{
    double* members;
    public:
 
        friend istream &operator>>(istream &,Progression&);
        friend ostream &operator<<(ostream &,Progression&);
        friend double denominator(Progression);//throw();
        friend void function0 (Progression);
        friend void function (Progression, int);//throw();
        //friend void function2 (Progression, int);
        Progression();
        Progression(Progression&);
        ~Progression();
};
Progression::Progression()
{members=new double[::k]; 
int i=0;
while (i<::k)
{members[i]=0.0; i++;}
cout<<"Constructor colled"<<endl<<endl;
};
 
 
Progression::Progression(Progression& progression)
{
    members=new double[::k];
for( int i=0; i<::k; i++)
members[i]=progression.members[i];
 
 cout<<"Copy's constructor colled"<<endl;
};
 
Progression::~Progression()
{
    delete[]members; 
    cout<<"Destructor colled"<<endl<<endl;
};
Перегрузка ввода/вывода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
istream &operator>>(istream &t,Progression& progression1)
 { 
bool flag=0;
int l;
while (!flag)
{
cout<<"Введите члены прогрессии(окончание ввода завершите нулем): ";
int i=0;
while (true)
{   
    cin>>l; 
    if (i==::k) 
        if (l==0) {flag=1; break;} 
        else throw runtime_error("Ошибка runtime! Выход за границы");//{ cout<<"Превышение заданных границ!"<<endl; flag=0; break;} 
        progression1.members[i]=l;
        i++;
};
}
 
return t;
 }
main:
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
int main()
{
setlocale(LC_ALL,"Rus");
    int n;
try
{
       cout<<"Введите количество членов прогрессии"<<endl;
       cin>>::k;
       if (::k==0) throw empty();
 
       Progression progression;
       cin>>progression;
       //cout<<progression;
    
       cout<<"Введите номер члена, до которого нужно посчитать сумму геометрической прогрессии "<<endl;
       cin>>n;
       if (n==1) function0(progression);
       else 
                 function(progression, n-1);
 
}
catch(empty){  cerr<<"Предлагаемое значение невозможно! /ошибка/"<<endl;  }// пустой класс
catch(const exception &e) {  cerr<<e.what()<<endl;} // стандартное исключение
catch(delusion) {cerr<<"Вы ввели не геометрическую прогрессию! /ошибка/"<<endl;}// пустой класс
catch(class_with_parameters e){}//собственный класс ?????
 
 
 
    cin.get();
   _getch();
   return 0;
 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2014, 19:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Исключение, как класс с полями-параметрами функции (C++):

Исключение как пустой класс - C++
Добрый день. В задании лабы сказано: исключение реализовать,как пустой класс. Перехват и обработка исключения в главной функции. Сама...

Как создать класс-исключение? - C++
Написать шаблонный класс согласно варианту. Описать класс-исключение или иерархию классов-исключений. Генерировать исключения в...

Из класса "Дата" с полями день, месяц, год создать класс "Время" с дополнительными полями час, минута, секунда - C++
в общем .надо класс дата полями день, месяц год.теперь мне надо создать класс &quot;Время&quot; з дополнительными полями часов,минут,секунд и...

Создать базовый класс Тройка_чисел (Triad) и производный класс Time с полями часы, минуты и секунды - C++
Наследование. Виртуальныефункции.Полиморфизм. 1. Цельзадания: 1) Создание консольного приложения, состоящего и - Базовый класс:...

Создать класс и класс-потомок с полями - C++
Создать класс и класс-потомок с полями, под некоторые из полей классов память выделять динамично. Реализовать в классе и классе - потомке...

Создать класс Man (человек), с полями: имя, возраст, пол и вес. Создать производный класс Student ... - C++
Создать класс Man (человек), с полями: имя, возраст, пол и вес. Определить методы задания имени, возраста и веса. Создать производный класс...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2014, 19:44
Привет! Вот еще темы с ответами:

Класс с двумя полями - C++
подскажите class classrod { protected: float a; public: classrod():a(0){} // конструктор...

Создать класс матросы с 2 полями - C++
Создать класс матросы с 2 полями создать класс корабль с 2 полями Реализовать ф-ию и добавить Show(); В головную программу добавить...

Реализовать класс А с полями a и b и свойством с - C++
Создать класс А с полями a и b и свойством с. Свойство - значение выражения над полями a и b. Поля инициализировать при объявлении класса....

Создать класс с двумя полями и конструктором - C++
Напишите пожалуйста класс содержащий два поля: фирма машины(строка), цена(число); конструктор и методы ввода/вывода. Мой зачет в...


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

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

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