Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2010, 15:39   #1
Aleksandr_Yanov
Подтвердите свой е-майл
 
Регистрация: 13.06.2010
Сообщений: 39
Вопрос C++,try-catch-trow,Как модифицировать готовый код?

Добрый день,подскажите как можно изменить вот этот код.
Код:
// exc_mean.h  -- exception classes for hmean(), gmean()
#ifndef EXC_MEAN_
#define EXC_MEAN_
#include <iostream>
#include <stdexcept>
class bad_hmean :public std::logic_error
{
private:
    double v1;
    double v2;
public:
    bad_hmean(double a = 0, double b = 0) :std::logic_error("Oshibochnie argumenti: a = -b dlya hmean()\n"), v1(a), v2(b){}
   // void mesg();
};

/*inline void bad_hmean::mesg()
{   
    std::cout << "hmean(" << v1 << ", " << v2 <<"): "
              << "invalid arguments: a = -b\n";
}*/

class bad_gmean :public std::logic_error
{
public:
    double v1;
    double v2;
    bad_gmean(double a = 0, double b = 0) :std::logic_error("Oshibochnie argumenti: argumenti doljni bit' >= 0 dlya gmean()"), v1(a), v2(b){}
};

/*inline const char * bad_gmean::mesg()
{  
    return "gmean() arguments should be >= 0\n";
}*/
#endif


#include <cstdlib>
#include <iostream>
#include <cmath> 
#include <stdexcept>
#include "exc_mean.h"

// function prototypes
double hmean(double a, double b) throw(bad_hmean);
double gmean(double a, double b) throw(bad_gmean);
int main(int argc, char *argv[])
{
    using std::cout;
    using std::cin;
    using std::endl;
    
    double x, y, z;

    cout << "Enter two numbers: ";
    while (cin >> x >> y)
    {
        try {                  // start of try block
            z = hmean(x,y);
            cout << "Harmonic mean of " << x << " and " << y
                << " is " << z << endl;
            cout << "Geometric mean of " << x << " and " << y
                << " is " << gmean(x,y) << endl;
            cout << "Enter next set of numbers <q to quit>: ";
        }// end of try block
        
        catch (bad_hmean & bg)    // start of catch block
        {
            bg.what();
            cout << "Try again.\n";
            continue;
        }                  
        catch (bad_gmean & hg) 
        {
            cout << hg.what();
            cout << "\nValues used: " << hg.v1 << ", " 
                 << hg.v2 << endl;
            cout << "Sorry, you don't get to play any more.\n";
            break;
        } // end of catch block
        
    }
    cout << "Bye!\n";
    system("PAUSE");
    return EXIT_SUCCESS;
}

double hmean(double a, double b) throw(bad_hmean)
{
    if (a == -b)
        throw bad_hmean(a,b);
    return 2.0 * a * b / (a + b);
}

double gmean(double a, double b) throw(bad_gmean)
{
    if (a < 0 || b < 0)
        throw bad_gmean(a,b);
    return std::sqrt(a * b); 
}
Исключения должны быть производными от базового класса(являющегося производным от logic_error),который хранит два значения аргумента.
Исключения должны иметь метод,отображающий эти значения и имя функции, и единственный блок catch,который используется для обоих исключений и,в том числе,для исключений прерывающих цикл обработки.
Aleksandr_Yanov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно исправить готовый код Алексей Долгов Помощь студентам 2 02.06.2010 15:46
графы(нуждаюсь в идее или объясните готовый код) shash Помощь студентам 2 14.05.2010 00:07
Нужно положить готовый дизайн на готовый сайт! Full87 Фриланс 1 16.12.2009 16:18
готовый код!нужна помошь в проверке(корректировке) -ushёl- Помощь студентам 23 13.03.2009 17:02
Программа "простые итерации". Готовый код. Проблема с компилированием. Oleg330 Общие вопросы C/C++ 9 25.12.2008 23:51