Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
1

Вычислить значение функции

23.09.2012, 14:49. Показов 1077. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу,помогите с программой! Я новичок и нуждаюсь в помощи. Программу-то написал,но в ней куча ошибок! Вот сама функция: y=((0.8/(a+b)*(tan^2(x))+1)/((PI/4)+(x^(-1/8))).
А вот программа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <locale.h>                 //Для русифицированного вывода на консоль
#pragma warning( disable:4996 )     //Для заприщения лишних ошибок
int main( void )
{
    setlocale{ LC_CTYPE, ".1251" }; //Для русифицированного вывода на консоль
    setlocale{ LC_MONETARY, ".1251" };
 
    float a,b,x,                    //Исходные данные
          у;                       //Результат
    FILE *in,                       //Указатель на файл ввода
         *out;                      //Указатель на файл вывода
    int ret;                        //Для контроля ошибок
    const double PI = 3.14159265;
 
    //Открытие файла ввода
    in = fopen( "dat.txt", "rt" );
    if( in == NULL )
    {
        printf( "Ошибка 1: Ошибка открытия файла ввода dat.txt \n" );
        return 1;
    }
 
    //Чтение исходных данных
    ret = fscanf( in, "a=%f b=%f x=%f", &a, &b, &x );
    if( ret != 3)
    {
        printf( "Ошибка 2: Ошибка чтения исходных данных: a=<float> b=<float> x=<float> /n" );
        return 2;
    }
 
    //Закрытие файла ввода
    ret = fclose( in );
    if( ret == EOF )
    {
        printf( "Ошибка 3: Ошибка закрытия файла ввода dat.txt /n" );
        return 3;
    }
 
    //Проверка ОДЗ
    if( a == -b )
    {
        printf( "Ошибка 4: Значение суммы a+b не может быть 0 /n" );
        return 4;
    }
 
    if( x <= 0)
    {
        printf( "Ошибка 5: Значение x не может быть <= 0 /n" );
        return 5;
    }
 
    //Вычисление
    y=((0.8/(a+b)*(tan^2(x))+1)/((PI/4)+(x^(-1/8)));
 
    //Открытие файла вывода
    out = fopen( "res.txt", "wt" );
    if( out == NULL )
    {
        printf( "Ошибка 6: Ошибка открытия файла вывода res.txt /n" );
        return 6;
    }
 
    //Печать технического задания, исходных данных и результата
    fprintf( out, "Вычислить значение функции по формуле /n"
            "Исходные данные: /n a=%.2f b=%.2f x=%.2f /n"
            "Результат: /n y=%.2f", a, b, x, y );
 
    //Закрытие файла вывода
    ret = fclose( out );
    if( ret == EOF )
    {
        printf( "Ошибка 7: Ошибка закрытия файла вывода res.txt /n" );
        return 7;
    }
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.09.2012, 14:49
Ответы с готовыми решениями:

Вычислить значение функции (значение переменной Х передается в качестве параметра функции)
Написать функцию, которая возвращает вычисленное значение функции. Значение переменной Х передается...

Вычислить значение аргумента x, значение функции y, max и min функций
где диапазон изменения аргумента -2 &lt;= x &lt;=3 , шаг 0,1

Вычислить где значение функции меняет знак(отделение корней функции)
Имеется следующая функция f(x)=sqrt(4*x+7)-3*cos(x) Нужно написать программу, где будет выводится...

Вычислить значение функции a = b ^2 sin (b), причем b изменяется от 0,9 до 1,7 с шагом 0,2. Найти среднее значение разности между элементами
Доброго времени суток ! Помогите решить задачу ! Нужно написать в цикле с постусловием следующее...

18
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
23.09.2012, 15:11 2
mc_evgenij,
Программу-то написал,но в ней куча ошибок!
Возьми за основу логически подходить к проблеме, не смотреть на кучу ошибок, а разбирать по одной. Начни с первой ошибки и доведи ее до ума.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
23.09.2012, 15:19 3
Цитата Сообщение от mc_evgenij Посмотреть сообщение
Я новичок и нуждаюсь в помощи.
Золотые слова.

Добавлено через 54 секунды
mc_evgenij, что не так?

Добавлено через 6 минут
C
1
(.8 / (a + b) * (tan( x ) * tan( x )) + 1) / ((PI / 4) + pow( x, -1. / 8 ))
0
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 15:19  [ТС] 4
Цитата Сообщение от Garic_ Посмотреть сообщение
mc_evgenij,

Возьми за основу логически подходить к проблеме, не смотреть на кучу ошибок, а разбирать по одной. Начни с первой ошибки и доведи ее до ума.
Я пробовал поочереди разбирать ощибки,но причем тут эта ошибка,к тому же встречается 5 раз в тех местах,где ее не должно быть.
Миниатюры
Вычислить значение функции  
0
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 15:24 5
начнем с того что там скобки {} а надо ()
1
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 15:27  [ТС] 6
Цитата Сообщение от Nixy Посмотреть сообщение
начнем с того что там скобки {} а надо ()
Ой... Спасибо) Чего-то не заметил это... Осталось только ошибки:
c:\documents and settings\evgeny\рабочий стол\универ\программирование\project\9.1\9.1.cpp(61) : error C2065: 'y' : undeclared identifier
c:\documents and settings\evgeny\рабочий стол\универ\программирование\project\9.1\9.1.cpp(61) : error C2666: 'pow' : 6 overloads have similar conversions
c:\program files\microsoft visual studio 9.0\vc\include\math.h(575): could be 'long double pow(long double,int)'
c:\program files\microsoft visual studio 9.0\vc\include\math.h(573): or 'long double pow(long double,long double)'
c:\program files\microsoft visual studio 9.0\vc\include\math.h(527): or 'float pow(float,int)'
c:\program files\microsoft visual studio 9.0\vc\include\math.h(525): or 'float pow(float,float)'
c:\program files\microsoft visual studio 9.0\vc\include\math.h(489): or 'double pow(double,int)'
c:\program files\microsoft visual studio 9.0\vc\include\math.h(123): or 'double pow(double,double)'
while trying to match the argument list '(float, double)'
c:\documents and settings\evgeny\рабочий стол\универ\программирование\project\9.1\9.1.cpp(74) : error C2065: 'y' : undeclared identifier
0
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 15:33 7
если вы думаете что ^ это возведение в степень то вы заблуждаетесь
C++
1
y=((0.8/(a+b)*(tan^2(x))+1)/((PI/4)+(x^(-1/8)));
исправте на
C++
1
y=((0.8/(a+b)*(pow(tan(x),2))+1)/((PI/4)+(pow(x,-1/8)));
Добавлено через 4 минуты
не понимаю почему он не определяет у , сделайте вот так
C++
1
float y=(0.8/(a+b)*(pow(tan(x),2))+1)/((PI/4)+(pow(x,-1/8)));
0
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 15:38  [ТС] 8
Цитата Сообщение от Nixy Посмотреть сообщение
если вы думаете что ^ это возведение в степень то вы заблуждаетесь
C++
1
y=((0.8/(a+b)*(tan^2(x))+1)/((PI/4)+(x^(-1/8)));
исправте на
C++
1
y=((0.8/(a+b)*(pow(tan(x),2))+1)/((PI/4)+(pow(x,-1/8)));
Добавлено через 4 минуты
не понимаю почему он не определяет у , сделайте вот так
C++
1
float y=(0.8/(a+b)*(pow(tan(x),2))+1)/((PI/4)+(pow(x,-1/8)));
Секундочку...
0
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
23.09.2012, 15:41 9
mc_evgenij, Смотри по порядку я тебе об этом говорил. К примеру у тебя выводит
error C2065: 'y' : undeclared identifier
Не видит переменную, значит замени на
C++
1
    float a,b,x,у;
И т.д.
0
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 15:41  [ТС] 10
Нет,не хочет так,ошибка не исчазает,к тому же добавляется еще одна.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
23.09.2012, 15:43 11
Что-то мне подсказывает что эта конструкция не сработает:
Цитата Сообщение от mc_evgenij Посмотреть сообщение
-1/8
0
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 15:44  [ТС] 12
Цитата Сообщение от Garic_ Посмотреть сообщение
mc_evgenij, Смотри по порядку я тебе об этом говорил. К примеру у тебя выводит Не видит переменную, значит замени на
C++
1
    float a,b,x,у;
Сработало!!! Спасибо огромное!!! Вот только предупреждение появилось:c:\documents and settings\evgeny\рабочий стол\универ\программирование\project\9.1\9.1.cpp(60) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
Compiling manifest to resources...
Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
Copyright (C) Microsoft Corporation. All rights reserved.
Linking...
Embedding manifest...
Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
Copyright (C) Microsoft Corporation. All rights reserved.

Могу ли не обращать на него внимание?
0
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
23.09.2012, 15:45 13
А вообще присмотрелся что у тебя вместо y(английского), русская у
0
ComfyMobile
401 / 282 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 15:48 14
мне кажется у вас там бука У а не Y

Добавлено через 1 минуту
Цитата Сообщение от mc_evgenij Посмотреть сообщение
Сработало!!! Спасибо огромное!!! Вот только предупреждение появилось:c:\documents and settings\evgeny\рабочий стол\универ\программирование\project\9.1\9.1.cpp(60) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
Compiling manifest to resources...
Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
Copyright (C) Microsoft Corporation. All rights reserved.
Linking...
Embedding manifest...
Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
Copyright (C) Microsoft Corporation. All rights reserved.

Могу ли не обращать на него внимание?
поменяй с float на double , если напрягаеттак ,и будь более внимателен
0
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
23.09.2012, 15:50 15
Много лишнего выкладываешь. Проще
conversion from 'double' to 'float', possible loss of data
Подумай и скажи что тебе это говорит?
0
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 15:53  [ТС] 16
Цитата Сообщение от Garic_ Посмотреть сообщение
Много лишнего выкладываешь. Проще Подумай и скажи что тебе это говорит?
Это значит,что при переходе от double к float теряется значение?
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
23.09.2012, 15:55 17
Теряется точность вычислений.
0
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 492
23.09.2012, 15:56 18
mc_evgenij, Вот молодец! Ты уже делаешь успехи. Только точность вычислений
1
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 16:03  [ТС] 19
Цитата Сообщение от Garic_ Посмотреть сообщение
mc_evgenij, Вот молодец! Ты уже делаешь успехи. Только точность вычислений
Спасибо)

Добавлено через 37 секунд
Всем большое спасибо!!! Все работает!!!)
0
23.09.2012, 16:03
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2012, 16:03
Помогаю со студенческими работами здесь

Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором функции
Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором...

Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором функции
Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором...

Вычислить значение функции аргумент которой вычисляется из другой кусочно заданной функции
Решите программу то я не знаю как:hysteric: Вычислить значение y в зависимости от выбранной...

Используя указатели на функцию вычислить значение функции в точке X в соответствии с выбором функции пользователем
Решил выложить свои лабораторные работы 1-10 за первый курс, первого семестра...


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

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