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

Исключительные операции, класс и вызовы - C++

Восстановить пароль Регистрация
 
denfox_pro
0 / 1 / 0
Регистрация: 30.10.2012
Сообщений: 113
06.02.2014, 23:46     Исключительные операции, класс и вызовы #1
Алгоритм задачи
1. Повторять действия, пока не получено правильного результата
1.1. Увести число и его степень.
1.2. Если число >0, то возвести число в введенную степень.
1.3. Если число <0, то произвести такие действия:
1.3.1. Выделить целую и дробную части степени.
1.3.2. Если дробная часть степени равняется 0 и его целая часть непарная, тогда возвести число в степень и получить отрицательный результат;
1.3.3. Иначе получить положительный результат поднесения числа к степени;
1.3.4. Если степень дробная и число отрицательно, то формировать виклю-чення;
1.3.5. Если число и степень равняются 0, тогда результат равняется 1;
1.3.6. Если степень <1, то формировать исключение:

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

2. Конец цикла.

C++ (Qt)
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
#include <math.h>
#include <iostream>
using namespace std;
 
class exception {
public:
  exception () throw();
  exception (const exception&) throw();
  exception& operator= (const exception&) throw();
  virtual ~exception() throw();
  virtual const char* what() const throw();
};
 
 
int main(void)
{
    double x,stp,s; bool res=false;
    cout<<"Vv :"; cin>>x>>stp;
    
    while (res) 
  { 
      if (x>0) {s=pow(x,stp); res=true;}
      else if (x<0) 
     {
          int stD=(int)x; double stF=x-stD;
          if (stF=0 && stD%1) s=-pow(x,stp); else s=pow(x,stp);
          if (x<0) throw "chislo otrisatelnoe";
          if (x=stp=0) s=1;
          if (stp<1) {
              throw "stepen otrisatelniy";
          }
      }
    
    }
    
    
    cout<<s<<endl;
    system("pause");
      
    return 0;
 
}
помогите, я уже запарился, а время малое до сдачи

+ если кому не лень вот дополнение к условию:
Продемонстрировать последовательность вызовов обработчика исключений catch() при использовании вложенных блоков try - catch(). Протестировать на примере обработки исключений вида : потеря значения в выражении с плавающей точкой, деления на нуль, переполнения значений с плавающей точкой, недопустимая математическая операция с плавающей точкой.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2014, 23:46     Исключительные операции, класс и вызовы
Посмотрите здесь:

Создайте класс Время, в котором реализованы операции сложения, вычитания, сравнения, ввода и вывод на экран C++
Класс Hugeint (целые числа) Операции: - =, сравнение(<, >) C++
Класс «Дата» - поля данных и перегруженные операции C++
Описать абстрактный класс для операции C++
C++ Создать класс матриц с целочисленными элементами и определить операции умножения и сложения
Создать класс вектор Vector (int *). Перегрузить операции: C++
C++ Описать класс Двумерная Точка, реализовать операции отношения
C++ Комплексные числа. Реализовать класс и математические операции

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
07.02.2014, 12:11     Исключительные операции, класс и вызовы #2
1. Почему вы не заключили блок кода который может привести к ошибке в конструкцию try catch.
2. Зачем вы создали класс исключения и не пользуетесь им(точнее не создали а кажется скопировали интерфейс с библиотеки с++)
Пример использования исключений
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
#include <iostream>
#include <string>
 
 
class MyException
{
      private:
              std::string mes;
      public:
             MyException(std::string _mes = "That what happened!!!"){ mes = _mes; }
             virtual std::string what(){ return mes; } 
};
 
class MyExceptionExt : public MyException
{
      public:
             MyExceptionExt(std::string str = "In MyExceptionExt, that what happened") : MyException(str){}
             virtual std::string what(){ return (MyException::what() + " is realy!!!"); }
};
 
int main()
{
   
   int a;
   std::cout << "Input numeric is range 10 : 20 ";
   
   while( std::cin >> a)
   {
     try
     {    
          if(a < 0)
            throw MyException("You input numeric a < 0");
          else if(a == 0)
            throw MyException("You input numeric a == 0");
          else if(a > 0 && a < 10)
            throw MyException("You input numeric a > 0 && a < 10");
          else if(a > 20 && a < 100)
            throw MyException("You input numeric a > 20 && a < 100");
          else if(a >= 100)
            throw MyExceptionExt();
     }
     catch(MyException & e)
     {
       std::cout << e.what() << std::endl;
     }
     catch(MyExceptionExt & ext)
     {
       std::cout << ext.what() << std::endl;                   
     }
     std::cout << "Input numeric is range 10 : 20 ";
   }
  system("PAUSE");
  return 0;
}
Yandex
Объявления
07.02.2014, 12:11     Исключительные операции, класс и вызовы
Ответ Создать тему
Опции темы

Текущее время: 07:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru