Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.96
GepardD
5 / 5 / 1
Регистрация: 23.10.2009
Сообщений: 63
#1

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

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

Задача звучит так: найти 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?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2010, 17:46     Работа с библиотекой math.h
Посмотрите здесь:

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
18.02.2010, 18:05     Работа с библиотекой math.h #2
Цитата Сообщение от GepardD Посмотреть сообщение
и кто обьяснит ошибкy Domain error?
В какой строке ошибка?
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
18.02.2010, 18:12     Работа с библиотекой math.h #3
printf("y=%d g=%d w=%d\n",y,g,w);
Мне больше вот это интересно.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
18.02.2010, 18:19     Работа с библиотекой math.h #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 секунд
Ну и в функцию вынести, если нужно
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
18.02.2010, 18:25     Работа с библиотекой math.h #5
Время от времени при расчёте вылетает ошибка "sqrt: DOMAIN error" (то есть, говоря по русски - аргумент sqrt <= 0) и программа вываливается. ...

Добавлено через 34 секунды
Эта гуглем похожую проблему нашёл.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
18.02.2010, 18:34     Работа с библиотекой math.h #6
Цитата Сообщение от Genius Ignat Посмотреть сообщение
Время от времени при расчёте вылетает ошибка "sqrt: DOMAIN error" (то есть, говоря по русски - аргумент sqrt <= 0) и программа вываливается. ...
Странно... Корень только в строчке 8 берется. Причем от квадрата числа. Так что аргумент не может быть отрицательным. А sqrt(0) разве не высчитывается?
В принципе, можно (и нужно) заменить sqrt(pow(x, 2)) функцией fabs(x), т.к. корень от квадрата числа - это модуль этого числа. Одним махом упрощаем работу программы и избавляемся от ошибок округления
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
18.02.2010, 18:46     Работа с библиотекой math.h #7
w=y%g; //меня больше вот это напрягает: это не для плавающих точек.
GepardD
5 / 5 / 1
Регистрация: 23.10.2009
Сообщений: 63
18.02.2010, 18:54  [ТС]     Работа с библиотекой math.h #8
опустим остаток деления сделаем деление функции на функцию и вывод. киньте плз работ. програму.

Добавлено через 16 секунд
w=f/g;
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
18.02.2010, 19:02     Работа с библиотекой math.h #9
Как остаток от деления сделать, я написал в посте №4
Замени sqrt(pow(x, 2)) функцией fabs(x)
И вывод вроде такой должен быть (я printf редко использую, если что, поправьте):
C++
1
printf("y=%f g=%f w=%f\n",y,g,w);
Сделай эти изменения, и будет тебе рабочая программа
GepardD
5 / 5 / 1
Регистрация: 23.10.2009
Сообщений: 63
18.02.2010, 19:12  [ТС]     Работа с библиотекой math.h #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;
}
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
18.02.2010, 19:15     Работа с библиотекой math.h #11
Цитата Сообщение от GepardD Посмотреть сообщение
scanf ("%f",&x);
C
1
scanf("%lf", &x);
GepardD
5 / 5 / 1
Регистрация: 23.10.2009
Сообщений: 63
18.02.2010, 19:17  [ТС]     Работа с библиотекой math.h #12
Цитата Сообщение от easybudda Посмотреть сообщение
scanf("%lf", &x);
а так не считается asin & acos
Day
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
18.02.2010, 19:18     Работа с библиотекой math.h #13
Вставь
printf("x=%f\n", x);
if (x <=0) {
...
return;
}
GepardD
5 / 5 / 1
Регистрация: 23.10.2009
Сообщений: 63
18.02.2010, 19:21  [ТС]     Работа с библиотекой math.h #14
я благодарен за помощь но давайте не будем тыкать пальцем в небо. а заработает ли?
думаю не сложно открыть среду и проверить.
спс.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
18.02.2010, 19:33     Работа с библиотекой math.h #15
Цитата Сообщение от GepardD Посмотреть сообщение
дело не в том... он log(x) считать не хочет
Описание ошибки в студию

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

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

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

Добавлено через 1 минуту
да я все понимаю но х положительные в матиматике я еще хоть что то знаю)
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
18.02.2010, 19:37     Работа с библиотекой math.h #17
Цитата Сообщение от GepardD Посмотреть сообщение
а так не считается asin & acos
А вообще изучи форматы функций printf и scanf, а точнее, спецификаторы типов. Ну или пользуйся тогда потоками C++, они проще и в них ошибиться невозможно
GepardD
5 / 5 / 1
Регистрация: 23.10.2009
Сообщений: 63
18.02.2010, 19:50  [ТС]     Работа с библиотекой math.h #18
да хоть заменить их на cout cin оно и так не будит работать
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
18.02.2010, 19:53     Работа с библиотекой math.h #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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2010, 19:58     Работа с библиотекой math.h
Еще ссылки по теме:

Не работает math.h - C++
Почему-то мнения функций этой библиотеки сильно расходятся с мнениями моего калькулятора. По крайней мере функции синуса косинуса и...

Аргтансенс в Math - C++
Никак не могу добиться правильного значения значения atan(0,75) пробовал перевод в градусы и в радианы, получается все равно не то, что-то...

<iostream.h> и <math.h> - C++
Вопрос такого плана: прописываю дериктивы 1. #include &lt;iosteram.h&gt; - все функции работают или такое #include &lt;iosteram&gt; ...

math.h тригонометрические функции - C++
Приветствую. Ребят, такой вопрос возник..работал, работал..потом решил проверить..и смотрю, что sin() выводит какие-то бредовые значения,...

math.h перегруженная функция - C++
sqrt , pow - существует более одного экземпляра перегруженная функция &quot;pow/sqrt&quot;,соответствующего списку аргументов В коде программы: ...


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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
18.02.2010, 19:58     Работа с библиотекой math.h #20
Работа с библиотекой math.h
Yandex
Объявления
18.02.2010, 19:58     Работа с библиотекой math.h
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru