Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 12

Глобальная переменная для функции

12.04.2012, 22:01. Показов 2455. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Битый час мучаюсь, ерунда какая-то.
Мне нужно функцию задать как глобальную переменную.
f(x)=a*sin(b*x+c)
a, b, c - введенные мною числа соответственно...
Ну и в программе есть и другие ф-ии, а также x заменяется другими переменными.
Как задать эту переменную подскажите, если не сложно ...

ЗЫ пробовал делать через void. Писать не буду, т.к. полная ересь =\
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.04.2012, 22:01
Ответы с готовыми решениями:

Глобальная переменная
Подскажите, пожалуйста. Вопрос состоит в том, что я могу объявить глобальную переменную и задать ее значение вне функций. А как сделать...

Глобальная переменная
Здравствуйте, такая проблема: имеется 2 формы. На первой Вторая отображает таблицу из Excel (stringgrid) Суть: по нажатию на кнопку...

Глобальная переменная
Пишу лабиринт, раньше писал на С++ под DOS, щас в CodeGear C++ Builder Старый код запихал в Unit2.cpp соотвественно включил include...

19
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
12.04.2012, 22:45
Так объяви в классе метод и всё
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.04.2012, 22:51
Непонятно без кода
1
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 12
12.04.2012, 22:58  [ТС]
Ну все, что нужно сделать это чтобы была некая ф-ия f(x). Далее , чтобы вместе груды текста я писал , допустим, только func1(x) для вычисления , построения графика и тд.
что из кода я могу предоставить
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
12.04.2012, 23:28
Ну тогда действительно лучше использовать классы
1
wtf!?
 Аватар для Flyer
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
12.04.2012, 23:44
C++
1
2
3
возвращаемый тип func1(тип a, тип b,тип c,тип x,){
return a*sin(b*x+c)
}
ну а потом вызываешь func1(значение а,значение b,значение c,значение x);
если я правильно тебя понял
1
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 12
13.04.2012, 01:31  [ТС]
Можно у вас разузнать поподробнее про классы?
метод , указанный выше коверкал как мог - ничего не вышло
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
13.04.2012, 01:38
Так просто не раскажешь, читать надо

http://ru.wikipedia.org/wiki/К... ммирование)
http://www.codenet.ru/progr/visualc/vc/7.php
http://valera.asf.ru/cpp/book/c13.html
1
26 / 26 / 3
Регистрация: 13.04.2012
Сообщений: 61
13.04.2012, 14:10
Если нужно, чтобы функцию "видел" код, написанный выше этой функции, то на самый верх нужно вставить прототип функции.
Например:
C++
1
2
3
4
5
6
7
8
9
10
11
float Func1(float x);    //прототип функции, обязательно в конце точка с запятой
 
int main()
{
   float y = Func1(5);     //Фызов функции
}
 
float Func1(float x)     //Сама функция
{
   return 1 * sin(2 * x + 3);
}
2
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 12
14.04.2012, 00:17  [ТС]
как понял можно ограничиться данным кодом (так же спасибо Flyer)
C++
1
2
3
4
5
double Func1(double x) 
{
double a; double b; double c;
   return a * sin(b * x + c);
}
Но при определенной операции работает не верно . . . расчеты ни такие...

ЗЫ уже раз 5 , наверное, редактировал это сообщение. Писал и находил ошибки в своем коде...

Добавлено через 37 минут
в общем теперь уже написано без всяких пробелов/орфографических ошибок.
но выдает после 1ой итерации ошибку:
Invalid floating point operation
Причем как уже писал ранее, что расчеты неверные получаются, в двух местах, одинакового по сути содержания, работает функция по-разному: в одном ответ неверный, в другом - ошибка, выше описанная.
предлагаю код
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
if ((Func1(xmin)-Func2(xmin))*(Func1(xmax)-Func2(xmax))<0)
{
while (xmax-xmin>tochnost)
       {
       i++;
       x=(xmax+xmin)/2;
       Edit4->Text=(i);
       Edit3->Text=(x);
           
           if ((Func1(x)-Func2(x))==0) break;
       else
       {
          if ((Func1(xmin)-Func2(xmin))*(Func1(x)-Func2(x))<0)
          xmax=x;
          else xmin=x;
       }
       }
} 
else
     {
        if (Func1(xmin)==Func2(xmin))// выдает ошибку
        {
     Edit3->Text=(xmin);
     Edit4->Text=(1);
        }
        if (Func1(xmax)==Func2(xmax))//а здесь, наоборот, работает да так, что выводит ответ, мол нет корней
        {
     Edit3->Text=(xmax);
     Edit4->Text=(1);
        }
        else
        {
     Edit4->Text=(1);
     Edit3->Text=("В данном промежутке нет корней");
        }
     }
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.04.2012, 00:33
1. В ф-цию sin радианы подставляете?
2. Такие вычисления вносят погрешность поэтому проверять равенство бесполезно.

И покажите описание ф-ций 1 и 2
1
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 12
14.04.2012, 00:52  [ТС]
// объявление первой функции f(x)=a*sin(b*x+c)
C++
1
2
3
4
5
double Func1(double x)
{
double a;double b;double c;
   return a * sin(b * x + c);
}
// объявление второй функции g(x)=d*x+e
C++
1
2
3
4
5
double Func2(double x)
{
double d;double e;
   return d * x + e;
}
я задаю значения c=d=0, т.е. при x=0 должно выполняться равенство ведь, не зависимо градусы или радианы подставляю я: а получается , что в одном случае не верный ответ, в другом ошибка.
или я не прав в чем-то здесь?

Добавлено через 10 минут
Подставляю радианы соответственно.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.04.2012, 01:02
ну а e=?
1
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 12
14.04.2012, 01:04  [ТС]
Простите, опечатка
c=e=0
d не важно какое, при x=0 всегда будет выполняться
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.04.2012, 01:05
Либо так надо задавать
C++
1
2
3
4
double Func2(double x,double d,double e)
{
   return d * x + e;
}
Либо
C++
1
2
3
4
5
6
double d=0,e=0; // Глобальное объявление
 
double Func2(double x)
{
   return d * x + e;
}
То что у вас написано ерунда
1
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 12
14.04.2012, 01:11  [ТС]
Спасибо
долго думал об этом, но почему-то не пробовал
использовал, описанный Вами 1ый метод
все работает, но опять же при проверке минимума пишет, что нет корней, щас посмотрю повнимательней
Еще раз спасибо
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.04.2012, 01:18
Я имел ввиду что надо обе ф-ции переписать не только 2-ю
1
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 12
14.04.2012, 01:27  [ТС]
Естественно, я обе переписал
Если бы одну, тогда бы не работало)

я говорю о том, что не работает правильно данная обл-ть.
скорее всего код неверный, т.к. если убрать проверку для максимума, то для минимума все будет работать как надо. Хотя раньше с этим проблем не было)...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
else
     {
        if (Func1(xmin)==Func2(xmin))
        {
     Edit3->Text=(xmin);
     Edit4->Text=(1);
        }
        if (Func1(xmax)==Func2(xmax))
        {
     Edit3->Text=(xmax);
     Edit4->Text=(1);
        }
        else
        {
     Edit4->Text=(1);
     Edit3->Text=("В данном промежутке нет корней");
        }
     }
Добавлено через 7 минут
в принципе достаточно было перед вторым if написать else и все
работает как часы
Спасибо за помощь. Можно клоз.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
14.04.2012, 01:30
То есть Func1(0)==Func2(0) при a=0,e=0 не получается ?
Просто если x != 0 ( ну др. аргументы) то понятно что проблема вызвана погрешностью вычисления
1
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 12
14.04.2012, 01:35  [ТС]
Да все уже, проблема решена. Говорю же код поменял и теперь все как надо. Еще раз спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.04.2012, 01:35
Помогаю со студенческими работами здесь

Глобальная переменная
В программе много форм. Как и где описывать глобальную переменную, чтобы с ней можно было работать во всех формах?

Глобальная переменная в .h файле
В заголовочном файле пишу AnsiString CDirections={&quot;up&quot;,&quot;right&quot;,&quot;down&quot;,&quot;left&quot;}; AnsiString...

Глобальная переменная INT
Всем привет, желаю классно провести Новый Год! У меня появилась маленькая проблемка. Хочу сделать программу для учебы, что-то вроде...

Public переменная, или private переменная и функции get/set
Пишу свой класс, который потом будет много где использоваться и пытаюсь осознать, как правильнее и, что самое главное, почему. Вариант 1:...

Глобальная переменная в функции
Вот пример кода из книги var scope = &quot;global&quot;; function f(){ console.log(scope); //Выведет &quot;undefined&quot;, а не &quot;global&quot; ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru