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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2010, 13:44   #1
ArniLand
Пользователь
 
Регистрация: 27.06.2009
Сообщений: 89
По умолчанию Не правильно выполнение программы - исключения

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

Помогите исправить пожалуйста эту проблему.
Код программы:
Код:
//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;
}
ArniLand вне форума Ответить с цитированием
Старый 09.05.2010, 16:33   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

аргумент логарифма меньше нуля
rrrFer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки неправильное выполнение программы ArniLand Общие вопросы C/C++ 3 30.03.2010 01:23
delphi 7, как прервать выполнение программы Altera Софт 3 27.07.2008 15:14
Запуск программы на выполнение из другой программы. ViNcHeStEr Паскаль, Turbo Pascal, PascalABC.NET 6 18.06.2008 14:33