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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2012, 11:32   #1
Tatyana64
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 37
По умолчанию При делении на 0 пишет -1.#INF

Задание: Вычислить и вывести на экран в виде таблицы значения функции F на интервале Хнач. до Хкон. с шагом dX

a*x^2+b^2*x при с<0 и b!=0
F= (x+a)/(x+c) при c>0 и b=0
x/c в остальных случаях
где a, b и с – действительные числа.
Функция F должна принимать действительное значения, если выражение (Ац И Вц) ИЛИ (Ац И Сц) не равно нулю, и целое значение в противном случае. Через Ац, Вц, и Сц обозначаются целые части a,b,c, операции И и ИЛИ – поразрядные. Значения a,b,c,Хнач, Хкон, dX ввести с клавиатуры.
Код программы
Код:
#include <iostream>
#include <math.h>
using namespace std;

int main ()
    {
     double a,b,c,Xstart,Xend,dX,f;
     double j=0; 
	 cin >> Xstart >> Xend >> dX>> a >> b >> c;
	 for (double i=Xstart; i<=Xend; i+=dX )
         {
         j=j+1;
		 if ((c<0)&&(b!=0)) f=a*pow(i,2)+pow(b,2)*i;
         if ((c>0)&&(b==0)) f=(i+a) / (i+c);
                else f=i/c;
         if ((floor(a) && floor(b)) || (floor(a) && floor(c) )!=0)  {cout << j << "  " << i << "               " << f << endl;} 
                else {cout << j << "  " << i << "            " << floor(f) << endl; }
            };
          system ("PAUSE");
Проверяла на наборе Xstart=-5,5 Xend=0,5 dX=1,5 a=1 b=1 с=1
дает правильный ответ (-5,5 -4 -2,5 -1 -0,5)
При наборе Xstart=-5,5 Xend=0,5 dX=1,5 a=0 b=0 с=1
Получаю (1 1 1 -1.#INF 0), а должно быть (1 1 1 0 0). Помогите найти ошибку
Tatyana64 вне форума Ответить с цитированием
Старый 04.11.2012, 12:25   #2
Tatyana64
Пользователь
 
Регистрация: 30.10.2012
Сообщений: 37
Хорошо Проблема решена

Код:
#include <iostream>
#include <math.h>
using namespace std;

int main ()
    {
     double a,b,c,Xstart,Xend,dX,f;
     double j=0; 
	 cin >> Xstart >> Xend >> dX>> a >> b >> c;
	 for (double i=Xstart; i<=Xend; i+=dX )
         {
         j=j+1;
		 if ((c<0)&&(b!=0)) f=a*pow(i,2)+pow(b,2)*i;
         if ((c>0)&&(b==0)) { if ((i+c)==0) f=0; else f= (i+a)/(i+c); }
         else {if (c==0) f=0; else  f=i/c;} 
                  if ((floor(a) && floor(b)) || (floor(a) && floor(c) )!=0)  {cout << j << "  " << i << "               " << f << endl;} 
                else {cout << j << "  " << i << "            " << floor(f) << endl; }
            };
          system ("PAUSE");
     return 0;
    }
может кому пригодится
Tatyana64 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при делении на 0 roxy7 Общие вопросы Delphi 3 25.05.2012 10:54
ошибка при делении на ноль.. vityanya Общие вопросы Delphi 2 13.01.2011 05:29
При делении чисел выводятся непонятные числа! khorolpavel Общие вопросы C/C++ 2 29.11.2010 16:17
Переполнение при делении JeyKip Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 20.03.2010 14:04
массивы, переполнение при делении Alter Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 21.05.2008 21:11