Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/32: Рейтинг темы: голосов - 32, средняя оценка - 4.94
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
1

Работа с библиотекой math.h

18.02.2010, 17:46. Показов 6137. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задача звучит так: найти f(x) при x=0.7 и остаток от деления f(x) на g(x).
Среда Borland C++ 3.1

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main(void)
{       double x,y,g; float w;
    printf ("Input x\n");
    scanf ("%d",&x);
    y=log(x)/(1/cos(x)+pow(2.7,x));
    g=asin(x)+acos(x)+sqrt(pow(x,2));
    w=y%g;
    printf("y=%d g=%d w=%d\n",y,g,w);
    getch();
    return 0;
}
и кто обьяснит ошибкy Domain error?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2010, 17:46
Ответы с готовыми решениями:

Не распознает функцию tg (тангенс) с библиотекой math.h
не могу обозначить переменную тангенса,с библиотекой даже не распознает. условия(фото): Вычислить...

Работа с библиотекой MPIR
Всем привет. Начинаю осваивать С++, опыт нулевой... Хочу сделать програмку для перевода из...

Работа с библиотекой STL
Вроде задание несложное, но не могу понять в чем проблема Само задание: В текстовом файле...

Работа с библиотекой <fstream>
Задание: Задан массив в файле в котором указана размерность и сам массив 4 * 4, нужно считать эту...

21
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
18.02.2010, 18:05 2
Цитата Сообщение от GepardD Посмотреть сообщение
и кто обьяснит ошибкy Domain error?
В какой строке ошибка?
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
18.02.2010, 18:12 3
printf("y=%d g=%d w=%d\n",y,g,w);
Мне больше вот это интересно.
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
18.02.2010, 18:19 4
Цитата Сообщение от GepardD Посмотреть сообщение
остаток от деления f(x) на g(x)
Если я не ошибаюсь, оператор % определен только для целых операндов.
Можно попробовать так (не знаю, как там насчет стандартных функций):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
 
int main()
{
        setlocale(LC_ALL, "Russian");
        double x1=13.45, x2=2, result;
        int temp;
        temp=x1/x2;//Целая часть от деления
        result=x1-temp*x2;//Остаток
        cout << result << endl;
        system("pause");
        return 0;
}
Добавлено через 35 секунд
Ну и в функцию вынести, если нужно
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
18.02.2010, 18:25 5
Время от времени при расчёте вылетает ошибка "sqrt: DOMAIN error" (то есть, говоря по русски - аргумент sqrt <= 0) и программа вываливается. ...

Добавлено через 34 секунды
Эта гуглем похожую проблему нашёл.
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
18.02.2010, 18:34 6
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Время от времени при расчёте вылетает ошибка "sqrt: DOMAIN error" (то есть, говоря по русски - аргумент sqrt <= 0) и программа вываливается. ...
Странно... Корень только в строчке 8 берется. Причем от квадрата числа. Так что аргумент не может быть отрицательным. А sqrt(0) разве не высчитывается?
В принципе, можно (и нужно) заменить sqrt(pow(x, 2)) функцией fabs(x), т.к. корень от квадрата числа - это модуль этого числа. Одним махом упрощаем работу программы и избавляемся от ошибок округления
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
18.02.2010, 18:46 7
w=y%g; //меня больше вот это напрягает: это не для плавающих точек.
0
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
18.02.2010, 18:54  [ТС] 8
опустим остаток деления сделаем деление функции на функцию и вывод. киньте плз работ. програму.

Добавлено через 16 секунд
w=f/g;
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
18.02.2010, 19:02 9
Как остаток от деления сделать, я написал в посте №4
Замени sqrt(pow(x, 2)) функцией fabs(x)
И вывод вроде такой должен быть (я printf редко использую, если что, поправьте):
C++
1
printf("y=%f g=%f w=%f\n",y,g,w);
Сделай эти изменения, и будет тебе рабочая программа
0
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
18.02.2010, 19:12  [ТС] 10
дело не в том... он log(x) считать не хочет


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main(void)
{          double x,y,g,w;
    printf ("Input x\n");
    scanf ("%f",&x);
    y=(log(x))/(1/cos(x)+pow(2.7,x));
    g=asin(x)+acos(x)+fabs(x);
    w=y/g;
    printf("y=%f g=%f w=%f",y,g,w);
    getch();
    return 0;
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
18.02.2010, 19:15 11
Цитата Сообщение от GepardD Посмотреть сообщение
scanf ("%f",&x);
C
1
scanf("%lf", &x);
0
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
18.02.2010, 19:17  [ТС] 12
Цитата Сообщение от easybudda Посмотреть сообщение
scanf("%lf", &x);
а так не считается asin & acos
0
Day
1179 / 989 / 83
Регистрация: 29.10.2009
Сообщений: 1,385
18.02.2010, 19:18 13
Вставь
printf("x=%f\n", x);
if (x <=0) {
...
return;
}
1
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
18.02.2010, 19:21  [ТС] 14
я благодарен за помощь но давайте не будем тыкать пальцем в небо. а заработает ли?
думаю не сложно открыть среду и проверить.
спс.
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
18.02.2010, 19:33 15
Цитата Сообщение от GepardD Посмотреть сообщение
дело не в том... он log(x) считать не хочет
Описание ошибки в студию

Добавлено через 4 минуты
Day, +1

Цитата Сообщение от GepardD Посмотреть сообщение
я благодарен за помощь но давайте не будем тыкать пальцем в небо. а заработает ли?
думаю не сложно открыть среду и проверить.
спс.
Ты бы лучше спасибо сказал, Day все правильно говорит. У тебя функции вообще на какой области определены? Потому, что логарифм можно посчитать только для положительных чисел

Добавлено через 1 минуту
ЗЫ. Перед тем, как решать такие задачи, лучше бы построить математическую модель, чтобы потом не возникало ошибок
0
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
18.02.2010, 19:35  [ТС] 16
[IMG]http://s004.***********/i205/1002/8a/99186b8ca28b.jpg[/IMG]

Добавлено через 1 минуту
да я все понимаю но х положительные в матиматике я еще хоть что то знаю)
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
18.02.2010, 19:37 17
Цитата Сообщение от GepardD Посмотреть сообщение
а так не считается asin & acos
А вообще изучи форматы функций printf и scanf, а точнее, спецификаторы типов. Ну или пользуйся тогда потоками C++, они проще и в них ошибиться невозможно
0
5 / 5 / 2
Регистрация: 23.10.2009
Сообщений: 63
18.02.2010, 19:50  [ТС] 18
да хоть заменить их на cout cin оно и так не будит работать
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
18.02.2010, 19:53 19
Вот работающий код (не уверен насчет правильности нахождения остатка):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <cassert>
int main()
{       double x,y,g; float w;
        printf ("Input x\n");
        scanf ("%lf",&x);
        assert(x>0);
        y=log(x)/(1/cos(x)+pow(2.7,x));
        g=asin(x)+acos(x)+fabs(x);
        int temp=(int)(fabs(y)/fabs(g));
        w=fabs(y)-temp*g;
        printf("y=%lf g=%lf w=%f\n",y,g,w);
        getch();
        return 0;
}
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
18.02.2010, 19:58 20
Работа с библиотекой math.h
0
18.02.2010, 19:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2010, 19:58
Помогаю со студенческими работами здесь

Работа со стандартной библиотекой List.H
Помогите подключить стандартную библиотеку шаблонов List.H (с++ 3.1 для дос) и создать объект для...

Работа со статической lib библиотекой
Здравствуйте. Собрал в VS первую библиотеку. Скомпилировал. Появился файл .lib в папке debug. И я...

Работа с библиотекой STL, контейнер map
Ввожу с экрана имя и номер телефона несколько раз, но for_each почему-то выводит на экран только...

Работа с библиотекой miracl: тест Ферма на простоту
начал разбираться с библиотекой miracl, дали задание написать реализацию теста Ферма на простоту,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru