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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Dicur3x
0 / 0 / 0
Регистрация: 25.05.2013
Сообщений: 29
#1

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

25.06.2013, 11:54. Просмотров 319. Ответов 8
Метки нет (Все метки)

Необходимо реализовать обработку исключительных ситуаций в программе, в котором реализуется циклический алгоритм вычисления вектора значений функции 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2013, 11:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Необходимо реализовать обработку исключительных ситуаций в программе (C++):

Придумать 10 задач на обработку исключительных ситуаций - C++
Здравствуйте! Помогите, пожалуйста, придумать 10 задач на обработку исключительных ситуаций.

Обработка исключительных ситуаций - C++
Всем доброго времени суток, не понимаю как сделать обработку исключительной ситуации когда при вводе количества строк, вводится не целое, а...

Обработка исключительных ситуаций - C++
Мне нужно было создать шаблонный класс и написать обработку исключающих ситуаций. Вот, что я сделал #pragma once #include &lt;iostream&gt;...

Обработка исключительных ситуаций - C++
Нужна одна работающая программа из 2. 1) Наберите текст программы приведенного примера обработки исключительных ситуаций и...

Обработка исключительных ситуаций - C++
Код программы,Что та не робит помогите #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; int...

Обработка исключительных ситуаций. - C++
Пожалуйста,помогите решить..В субботу экзамен,а я физически не успеваю написать 6 программок..( Написать функцию вычисления...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
iv-a
15 / 15 / 0
Регистрация: 25.06.2013
Сообщений: 63
25.06.2013, 12:51 #2
переменная f не инициализирована
0
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 193
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;
}
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
25.06.2013, 13:04 #4
@Dicur3x, @FireProoF, не используйте фундаментальные типы (float, char ... ) для исключений. Напишите свой класс.
0
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 193
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;
}
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
25.06.2013, 13:54 #6
@FireProoF, не забывайте, что у тригонометрических функций из сишной библиотеки аргумент в радианах, а не в градусах.
P.S. Ну и класс исключения надо бы доработать. Скрыть указатель, сделать копирование строки сообщения и пр.
0
iv-a
15 / 15 / 0
Регистрация: 25.06.2013
Сообщений: 63
25.06.2013, 14:04 #7
Цитата Сообщение от FireProoF Посмотреть сообщение
float f;
if(x==90)
нельзя так сравнивать вещественные числа
0
FireProoF
17 / 17 / 1
Регистрация: 28.10.2012
Сообщений: 193
25.06.2013, 14:10 #8
Походу все ваши рекомендации автор должен сделать. Я так то знаю о своих ошибках, не зря же я их оставил. Пусть автор сам маленько поразмыслит.
1
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
25.06.2013, 14:39 #9
Цитата Сообщение от iv-a Посмотреть сообщение
нельзя так сравнивать вещественные числа
Такие можно. Для одинарной точности, по-крайней мере, до 2^24.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2013, 14:39
Привет! Вот еще темы с ответами:

Обработка исключительных ситуаций - C++
Здравствуйте, друзья. Подскажите, пожалуйста, как можно при помощи try-throw-catch &quot;защититься&quot; от ввода пользователем &quot;не того типа...

Обработки исключительных ситуаций - C++
Объясните, что от меня хотят, а то уже мозг кипит ... 7. Не абстрактный класс В является производным от абстрактного класса А. Определить...

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

Обработка исключительных ситуаций - C++
Помогите сделать обработку исключительных ситуаций вот мой код: #include &lt;iterator&gt; #include &quot;conio.h&quot; #include &lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.06.2013, 14:39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru