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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2013, 20:19   #1
Gerold_103
 
Регистрация: 03.10.2012
Сообщений: 3
По умолчанию Обычное деление

Здравствуйте.Мне требовалось написать функцию 1/x и (-2/3)*(x+1).Программа в первом случае выводит белиберду(1.#INF000),а во втором неверное значение(-0.66666).Для экспоненты все работает.Скажите,как исправить.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>


double f1 (double x)
{
    return exp(x) + 2;
}
double f2 (double x)
{
    return 1.0 / x;
}
double f3 (double x)
{
    return (-2.0 / 3)*(x + 1);
}

int main (void)
{
    printf ("%f %f %f", f1(2.5), f2(1/3), f3(-3/4));
    return 0;
}

Последний раз редактировалось Gerold_103; 12.02.2013 в 20:21. Причина: так подробнее
Gerold_103 вне форума Ответить с цитированием
Старый 12.02.2013, 20:24   #2
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

При вызове функций параметры неправильно заданы. Не f2(1/3), а f2(1.0/3.0) или, хотя бы, f2(1.0/3). Иначе, передаются нули, соответственно, неправильные результаты. Аналогично, с f3.

Upd. Еще как-нибудь так можно:
Код:
f2( (float) 1/3)
Μολὼν λαβέ

Последний раз редактировалось alexander13; 12.02.2013 в 20:28.
alexander13 вне форума Ответить с цитированием
Старый 12.02.2013, 20:25   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Ну почему же белиберду! Это расшифровывается как бесконечность.

Цитата:
Сообщение от alexander13 Посмотреть сообщение
При вызове функций параметры неправильно заданы. Не f2(1/3), а f2(1.0/3.0) или, хотя бы, f2(1.0/3). Иначе, передаются нули, соответственно, неправильные результаты. Аналогично, с f3.
Я согласен с alexander13.

Код:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>


double f1 (double x)
{
    return exp(x) + 2;
}
double f2 (double x)
{
    return 1.0 / x;
}
double f3 (double x)
{
    return (-2.0 / 3)*(x + 1);
}

int main (void)
{
    printf ("%.3lf %.3lf %.3lf", f1(2.5), f2(1.0/3.0), f3(-3.0/4.0));
    return 0;
}
Как-то вот так.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Stilet; 12.02.2013 в 21:20.
Bugrimov вне форума Ответить с цитированием
Старый 12.02.2013, 20:52   #4
Gerold_103
 
Регистрация: 03.10.2012
Сообщений: 3
Хорошо

Спасибо всем,помогло вроде!
Gerold_103 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передод числа с мантиссой в обычное десятичное Lost7070 Помощь студентам 0 12.11.2012 15:18
Касты и обычное приведение типов _-Re@l-_ Общие вопросы C/C++ 4 27.11.2011 06:13
4D мега лазерное, но обычное 2D проекционное шоу в МГУ Alar Свободное общение 3 05.09.2011 17:07
DialogBox или обычное окно? Dj-IIyIIc Win Api 3 05.11.2010 00:14