Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Пример применения механизма исключений (из Подбельского) при определении функции определения наибольшего общего делителя (НОД) двух целых чисел (алгоритм Евклида):
· если 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!