Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Следует отметить, что механизм обработки исключений является общим средством управления программой, а именно средством передачи управления специальному коду в вызывающем модуле



Пример применения механизма исключений (из Подбельского) при определении функции определения наибольшего общего делителя (НОД) двух целых чисел (алгоритм Евклида):

· если x==y, то ответ найден, НОД = x;

· если x<y, то y заменяется значением y-x;

· если x>y, то x заменяется значением x-y;

· алгоритм применим при соблюдении условий

Оба числа неотрицательны;

Оба числа отличны от нуля;

Этим ситуациям соответствуют два исключения. В первом случае исключением будет объект библиотечного класса string. Во втором случае, когда появляется нулевой параметр, в качестве исключения посылается значение второго, возможно ненулевого параметра, типа int.

#include <iostream>

#include <string>

Using namespace std;

int GCD (int x, int y) {

if (x==0) throw y;

if (y==0) throw x;

if(x<0) throw string(“\nNegative parameter 1”)

if(y<0) throw string(“\nNegative parameter 2”)

while(x!=y) {

if(x>y) x=x-y;

else y=y-x;

}

Return x;

}

int main() {

try{

cout<<”GCD(77,55) = ”<<GCD(77,55)<<endl;

cout<<”GCD(0,5) = ”<<GCD(0,5)<<endl;

cout<<”GCD(-7,4) = ”<<GCD(-7,4)<<endl;

}

catch(const string msg){

cout<<msg<<endl;

}

catch(const int ex){

cout<<” One parameter is ZERO!”;

cout<<” Another parameter equals “<<ex<<endl;

}





Дата публикования: 2014-11-28; Прочитано: 130 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...