Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не правильно выполнение программы - исключения 
:(
    Опции темы
ArniLand
Дата 9.5.2010, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



Написал программу с темой обратка исключительных ситуаций, в моей программе я сделал 2 исключения при которых  программа выдаст ошибку. Это когда выражение не будет иметь смысл при a не равняется нулю и когда в знаменателе получается ноль, соответственно на ноль делить нельзя. В программе почему то не подсчитывается логарифм, выдает странный результат выполнения программы. Результат программы, смущает какой то  -1 #INDuser posted image

Помогите исправить пожалуйста эту проблему.
Код программы:
Код

//Logarifm.h
#pragma once
class Logarifm
{
private:
    double a;
    double c;
    double d;
    double F;
public:
    Logarifm(double a1, double c1, double d1);
    ~Logarifm();
    double Function();
};

//.cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Logarifm.h"
#include <math.h>

using namespace std;

Logarifm::Logarifm(double a1, double c1, double d1)
{
    a = a1;
    c = c1;
    d = d1;
}

Logarifm::~Logarifm()
{}

double Logarifm::Function()
{
    try
    {
        cout <<"a :" << a <<"\n";
        cout <<"c :" << c <<"\n";
        cout <<"d :" << d <<"\n";
        cout <<"Function F = (lg((2*c-a)+d-152)/(a/4+c))\n";

        if (a <=0)
        throw "a <= 0";
        
        if ((a/4+c) == 0)
        throw "Delenie na 0 zapresheno";

        
        F = log10(((2*c-a)+d-152)/(a/4+c));
        cout << F;
    }

    catch (const char *t)
    {
        cout << t <<"/n";
    }
     
    return F;
}

//main.cpp
#pragma once
#include "stdafx.h"
#include <iostream>
#include "Logarifm.h"

using namespace std;

int main()
{
    Logarifm *obj[2] = {
    new Logarifm(4.9, 3.5, 4.5),
    new Logarifm(3.4, 5.6, 6.0)};

    obj[0]->Function();
    cout << "\n\r";
    obj[1]->Function();
    cout << "\n\r";
    return 0;
}


Это сообщение отредактировал(а) bsa - 10.5.2010, 17:17
PM MAIL   Вверх
toxx
Дата 9.5.2010, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



логарифм не может быть <0
Код

(2*c-a)+d-152)

PM MAIL   Вверх
ArniLand
Дата 9.5.2010, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



toxx, это вы имеете виду добавить еще одно исключение?
PM MAIL   Вверх
toxx
Дата 9.5.2010, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



ArniLand
ну наверно, если хотите чтобы правильно работало =)
PM MAIL   Вверх
ArniLand
Дата 9.5.2010, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



toxx, спасибо работает, еще есть вопрос
Код

Logarifm *obj[2] = {
    new Logarifm(4.9, 3.5, 4.5),
    new Logarifm(3.4, 5.6, 6.0)};


Здесь я передаю 2 раза значения для a, c, d, но смущает меня то, что 2 раза передаются значения, но мне не понятно удаляются например первые три значение a, c, d из памяти когда я передаю вторые значения?

Это сообщение отредактировал(а) ArniLand - 9.5.2010, 12:58
PM MAIL   Вверх
toxx
Дата 9.5.2010, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



ArniLand

нет они не удаляются, вы создаёте 2 объекта класс Logarifm
PM MAIL   Вверх
ArniLand
Дата 9.5.2010, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 17.8.2008

Репутация: нет
Всего: нет



toxx, для значений которые передаются при вызове конструктора 2го объекта логарифм будет правильно считаться? В моем случае будет ошибка на то что знаменатель < 0, но я виду если в общем случае с другими значения при которых ((2*c-a)+d-152) > 0



Это сообщение отредактировал(а) ArniLand - 9.5.2010, 13:09
PM MAIL   Вверх
toxx
Дата 9.5.2010, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: 4
Всего: 13



Цитата

В моем случае будет ошибка на то что знаменатель < 0

я написал числитель, а не знаменатель, чтобы показать где <0 у вас, если числ<0 а знаменатель >0 то логарифм весь <0 =>>>  что весь логарифм не имеет смысла.
Код

для значений которые передаются при вызове конструктора 2го объекта логарифм будет правильно считаться?

нет, чтобы он считался верно нужно передать такие значения c a d, которые (2*c-a)+d>152 

у вас чтобы правильно считался логарифм нужно чтобы числ и знаменатель были одного знака, иначе логарифм не имеет смысла.
PM MAIL   Вверх
NightmareZ
Дата 9.5.2010, 15:55 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 0
Всего: 13



Правильно писать "Logarithm".


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0569 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.