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

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

Восстановить пароль Регистрация
 
mc_evgenij
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 14:49     Вычислить значение функции #1
Прошу,помогите с программой! Я новичок и нуждаюсь в помощи. Программу-то написал,но в ней куча ошибок! Вот сама функция: 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Garic_
71 / 71 / 7
Регистрация: 03.11.2009
Сообщений: 468
23.09.2012, 15:11     Вычислить значение функции #2
mc_evgenij,
Программу-то написал,но в ней куча ошибок!
Возьми за основу логически подходить к проблеме, не смотреть на кучу ошибок, а разбирать по одной. Начни с первой ошибки и доведи ее до ума.
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 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 ))
mc_evgenij
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 15:19  [ТС]     Вычислить значение функции #4
Цитата Сообщение от Garic_ Посмотреть сообщение
mc_evgenij,

Возьми за основу логически подходить к проблеме, не смотреть на кучу ошибок, а разбирать по одной. Начни с первой ошибки и доведи ее до ума.
Я пробовал поочереди разбирать ощибки,но причем тут эта ошибка,к тому же встречается 5 раз в тех местах,где ее не должно быть.
Миниатюры
Вычислить значение функции  
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 15:24     Вычислить значение функции #5
начнем с того что там скобки {} а надо ()
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
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 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)));
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)));
Секундочку...
Garic_
71 / 71 / 7
Регистрация: 03.11.2009
Сообщений: 468
23.09.2012, 15:41     Вычислить значение функции #9
mc_evgenij, Смотри по порядку я тебе об этом говорил. К примеру у тебя выводит
error C2065: 'y' : undeclared identifier
Не видит переменную, значит замени на
C++
1
    float a,b,x,у;
И т.д.
mc_evgenij
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 15:41  [ТС]     Вычислить значение функции #10
Нет,не хочет так,ошибка не исчазает,к тому же добавляется еще одна.
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 10
Завершенные тесты: 1
23.09.2012, 15:43     Вычислить значение функции #11
Что-то мне подсказывает что эта конструкция не сработает:
Цитата Сообщение от mc_evgenij Посмотреть сообщение
-1/8
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.

Могу ли не обращать на него внимание?
Garic_
71 / 71 / 7
Регистрация: 03.11.2009
Сообщений: 468
23.09.2012, 15:45     Вычислить значение функции #13
А вообще присмотрелся что у тебя вместо y(английского), русская у
Nixy
ComfyMobile
 Аватар для Nixy
399 / 280 / 8
Регистрация: 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 , если напрягаеттак ,и будь более внимателен
Garic_
71 / 71 / 7
Регистрация: 03.11.2009
Сообщений: 468
23.09.2012, 15:50     Вычислить значение функции #15
Много лишнего выкладываешь. Проще
conversion from 'double' to 'float', possible loss of data
Подумай и скажи что тебе это говорит?
mc_evgenij
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 15:53  [ТС]     Вычислить значение функции #16
Цитата Сообщение от Garic_ Посмотреть сообщение
Много лишнего выкладываешь. Проще Подумай и скажи что тебе это говорит?
Это значит,что при переходе от double к float теряется значение?
castaway
Эксперт С++
4846 / 2985 / 368
Регистрация: 10.11.2010
Сообщений: 11,026
Записей в блоге: 10
Завершенные тесты: 1
23.09.2012, 15:55     Вычислить значение функции #17
Теряется точность вычислений.
Garic_
71 / 71 / 7
Регистрация: 03.11.2009
Сообщений: 468
23.09.2012, 15:56     Вычислить значение функции #18
mc_evgenij, Вот молодец! Ты уже делаешь успехи. Только точность вычислений
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2012, 16:03     Вычислить значение функции
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
mc_evgenij
0 / 0 / 0
Регистрация: 23.09.2012
Сообщений: 8
23.09.2012, 16:03  [ТС]     Вычислить значение функции #19
Цитата Сообщение от Garic_ Посмотреть сообщение
mc_evgenij, Вот молодец! Ты уже делаешь успехи. Только точность вычислений
Спасибо)

Добавлено через 37 секунд
Всем большое спасибо!!! Все работает!!!)
Yandex
Объявления
23.09.2012, 16:03     Вычислить значение функции
Ответ Создать тему
Опции темы

Текущее время: 04:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru