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

Необходимо реализовать обработку исключительных ситуаций в программе - C++

Восстановить пароль Регистрация
 
Dicur3x
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 29
25.06.2013, 11:54     Необходимо реализовать обработку исключительных ситуаций в программе #1
Необходимо реализовать обработку исключительных ситуаций в программе, в котором реализуется циклический алгоритм вычисления вектора значений функции f(x). На дисплей в цикле выводится значение аргумента x
и соответствующее значение функции f(x), а также сообщения об исключительных ситуациях в программе, связанных с делением на нуль и пр.

Почему то при разных значениях X F(x)=4, непонятно, почему так.

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
#include <iostream>
#include <math.h>
#include <stdlib.h>
using namespace std;
void iskl (float x, float f)
{
    try
    {
        if(x==90)
        {
            cout << "x= " << x << "\t";
            throw x;
        }
        else f=((x*sin(x))+(4*(cos(2*x))))/(1-sin(x));
        cout << "x= " << x << "\t" <<"f(x)= " << f << endl;
    }
  catch (float i)
  {
      cout << "Delenie na 0!" << endl;
  }
}
int main()
{
    float f,xi,x,i;
    cout << "Enter x: ";
    cin >> xi;
    for (i=0; i<=xi; i=i+90)
    {
        x=i;
        iskl(x,f);
    }
    system("PAUSE");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2013, 11:54     Необходимо реализовать обработку исключительных ситуаций в программе
Посмотрите здесь:

C++ Обработка исключительных ситуаций
Обработка исключительных ситуаций. C++
Обработки исключительных ситуаций C++
C++ Обработка исключительных ситуаций
Обработка исключительных ситуаций C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
iv-a
 Аватар для iv-a
15 / 15 / 0
Регистрация: 25.06.2013
Сообщений: 63
25.06.2013, 12:51     Необходимо реализовать обработку исключительных ситуаций в программе #2
переменная f не инициализирована
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 190
25.06.2013, 12:57     Необходимо реализовать обработку исключительных ситуаций в программе #3
Как только x будет равен 90, вылезет исключение и программа завершится.

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
// 323.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <stdlib.h>
using namespace std;
void function (float x)
{
        float f;
        if(x==90) throw "Division by zero!";
 
        else
        {
            f = (((x*sin(x))+(4*(cos(2*x))))/(1-sin(x)));
            cout << "x= " << x << "\t" <<"f(x)= " << f << endl;
        }
}
int main()
{
    float xi,x,i;
    cout << "Enter x: ";
    cin >> x;
    
    try
    {
        for (x; x<=360; x+=90)
        {
            function(x);
        }
    }
    
    catch (char* msg)
    {
        cout << msg << endl;
    }
    system("PAUSE");
    return 0;
}
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
25.06.2013, 13:04     Необходимо реализовать обработку исключительных ситуаций в программе #4
@Dicur3x, @FireProoF, не используйте фундаментальные типы (float, char ... ) для исключений. Напишите свой класс.
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 190
25.06.2013, 13:11     Необходимо реализовать обработку исключительных ситуаций в программе #5
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
// 323.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <stdlib.h>
using namespace std;
 
class CException //класс исключений(ошибок)
{
public:
    // сообщение об ошибке
    char* msg;
    CException(char* errmsg) : msg(errmsg)
    {   }
};
 
void function (float x)
{
        float f;
        if(x==90) throw CException("Division by zero!");
 
        else
        {
            f = (((x*sin(x))+(4*(cos(2*x))))/(1-sin(x)));
            cout << "x= " << x << "\t" <<"f(x)= " << f << endl;
        }
}
int main()
{
    float xi,x,i;
    cout << "Enter x: ";
    cin >> x;
    
    try
    {
        for (x; x<=360; x+=90)
        {
            function(x);
        }
    }
    
    catch (CException e)
    {
        cout << e.msg << endl;
    }
    system("PAUSE");
    return 0;
}
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
25.06.2013, 13:54     Необходимо реализовать обработку исключительных ситуаций в программе #6
@FireProoF, не забывайте, что у тригонометрических функций из сишной библиотеки аргумент в радианах, а не в градусах.
P.S. Ну и класс исключения надо бы доработать. Скрыть указатель, сделать копирование строки сообщения и пр.
iv-a
 Аватар для iv-a
15 / 15 / 0
Регистрация: 25.06.2013
Сообщений: 63
25.06.2013, 14:04     Необходимо реализовать обработку исключительных ситуаций в программе #7
Цитата Сообщение от FireProoF Посмотреть сообщение
float f;
if(x==90)
нельзя так сравнивать вещественные числа
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 190
25.06.2013, 14:10     Необходимо реализовать обработку исключительных ситуаций в программе #8
Походу все ваши рекомендации автор должен сделать. Я так то знаю о своих ошибках, не зря же я их оставил. Пусть автор сам маленько поразмыслит.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2013, 14:39     Необходимо реализовать обработку исключительных ситуаций в программе
Еще ссылки по теме:

C++ Придумать 10 задач на обработку исключительных ситуаций
C++ Обработка исключительных ситуаций!
Обработка исключительных ситуаций C++

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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
25.06.2013, 14:39     Необходимо реализовать обработку исключительных ситуаций в программе #9
Цитата Сообщение от iv-a Посмотреть сообщение
нельзя так сравнивать вещественные числа
Такие можно. Для одинарной точности, по-крайней мере, до 2^24.
Yandex
Объявления
25.06.2013, 14:39     Необходимо реализовать обработку исключительных ситуаций в программе
Ответ Создать тему
Опции темы

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