Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
mc_evgenij
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
#1

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

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

Прошу,помогите с программой! Я новичок и нуждаюсь в помощи. Программу-то написал,но в ней куча ошибок! Вот сама функция: 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2012, 14:49
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вычислить значение функции (C++):

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

Вычислить значение аргумента 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. Найти среднее значение разности между элементами
Доброго времени суток ! Помогите решить задачу ! Нужно написать в цикле с...

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

Дано разложение функции в ряд Тейлора. Вычислить для значения x и точности Eps точное значение функции
Дано разложение функции y(x) в ряд Тейлора. Составить программу, вычисляющую...

18
Garic_
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 488
23.09.2012, 15:11 #2
mc_evgenij,
Программу-то написал,но в ней куча ошибок!
Возьми за основу логически подходить к проблеме, не смотреть на кучу ошибок, а разбирать по одной. Начни с первой ошибки и доведи ее до ума.
0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
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
mc_evgenij
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 15:19  [ТС] #4
Цитата Сообщение от Garic_ Посмотреть сообщение
mc_evgenij,

Возьми за основу логически подходить к проблеме, не смотреть на кучу ошибок, а разбирать по одной. Начни с первой ошибки и доведи ее до ума.
Я пробовал поочереди разбирать ощибки,но причем тут эта ошибка,к тому же встречается 5 раз в тех местах,где ее не должно быть.
0
Миниатюры
Вычислить значение функции  
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 15:24 #5
начнем с того что там скобки {} а надо ()
1
mc_evgenij
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
Nixy
ComfyMobile
400 / 281 / 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
mc_evgenij
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
Garic_
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 488
23.09.2012, 15:41 #9
mc_evgenij, Смотри по порядку я тебе об этом говорил. К примеру у тебя выводит
error C2065: 'y' : undeclared identifier
Не видит переменную, значит замени на
C++
1
    float a,b,x,у;
И т.д.
0
mc_evgenij
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 15:41  [ТС] #10
Нет,не хочет так,ошибка не исчазает,к тому же добавляется еще одна.
0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
23.09.2012, 15:43 #11
Что-то мне подсказывает что эта конструкция не сработает:
Цитата Сообщение от mc_evgenij Посмотреть сообщение
-1/8
0
mc_evgenij
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
Garic_
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 488
23.09.2012, 15:45 #13
А вообще присмотрелся что у тебя вместо y(английского), русская у
0
Nixy
ComfyMobile
400 / 281 / 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
Garic_
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 488
23.09.2012, 15:50 #15
Много лишнего выкладываешь. Проще
conversion from 'double' to 'float', possible loss of data
Подумай и скажи что тебе это говорит?
0
mc_evgenij
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 15:53  [ТС] #16
Цитата Сообщение от Garic_ Посмотреть сообщение
Много лишнего выкладываешь. Проще Подумай и скажи что тебе это говорит?
Это значит,что при переходе от double к float теряется значение?
0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
23.09.2012, 15:55 #17
Теряется точность вычислений.
0
Garic_
72 / 72 / 5
Регистрация: 03.11.2009
Сообщений: 488
23.09.2012, 15:56 #18
mc_evgenij, Вот молодец! Ты уже делаешь успехи. Только точность вычислений
1
mc_evgenij
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 16:03  [ТС] #19
Цитата Сообщение от Garic_ Посмотреть сообщение
mc_evgenij, Вот молодец! Ты уже делаешь успехи. Только точность вычислений
Спасибо)

Добавлено через 37 секунд
Всем большое спасибо!!! Все работает!!!)
0
23.09.2012, 16:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2012, 16:03
Привет! Вот еще темы с решениями:

Функции: вычислить значение сложной (составной) функции
помогите,пожалуйста!! 1)Y= Max(a,b) если х=0 y=Min(a,b) ...

В главной функции main () ввести входные данные, и вызвав собственные функции, вычислить значение выражения и вывести результаты
В главной функции main () ввести входные данные, и вызвав собственные функции,...

Вычислить значение функции
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; #include...

Вычислить значение функции
Задание надо переписывать в сообщение. Редавктор формул внизу страницы! В...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

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