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

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

12.04.2012, 22:01. Показов 2435. Ответов 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
8484 / 6151 / 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
8484 / 6151 / 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
8484 / 6151 / 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
8484 / 6151 / 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
8484 / 6151 / 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
8484 / 6151 / 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
8484 / 6151 / 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
8484 / 6151 / 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru