dePPman
Гость
|
|
« : 11-04-2005 16:43 » |
|
Здраствуйте! Есть проблема:надо вычислить интеграл с заданной точностью(пользователь сам вводит точность) по методу Симпсона + еще 3 шаблона ф-ции. Прогу написал, только для фиксированной точности и ф-ции. Подскажите как сделать, чтобы пользователь сам вводил точность вычисления + работало для трех разных ф-циий И как лучше реализовать графическую оболочку? //--------------------------------------------------------------------------- #include <stdio.h> #include <math.h> #pragma hdrstop //--------------------------------------------------------------------------- float integral(float, float, float, float (*)(float)); float f(float); #pragma argsused int main(void) { float result; result = integral(0, 6, .1, f); printf("%f", result); putchar('\n'); getchar(); return 0; } float f(float x) { return pow(x, 3) * pow(x - 5, 2); } float integral(float a, float b, float e, float (*f)(float)) { int n = 4, i; float s_ab = f(a) + f(b); float h = (b - a) / n; float s_even = 0, s_odd; float s_res = 0, s_pres; for (i = 2; i < n; i += 2) { s_even += f(a + i * h); } do { s_odd = 0; s_pres = s_res; for (i = 1; i < n; i += 2) { s_odd += f(a + i * h); } s_res = h / 3 * (s_ab + 2 * s_even + 4 * s_odd); if (s_res == 0) s_res = e; s_even += s_odd; n *= 2; h /= 2; } while (fabs((s_pres - s_res) / s_res) > e); return fabs(s_res); } //--------------------------------------------------------------------------- Имя переменной Тип Назначение n int Число разбиений отрезка [a, b] i int Счетчик циклов a float Нижний предел интегрирования b float Верхний предел интегрирования h float Шаг разбиения отрезка e float Допустимая относительная ошибка f float (*) Указатель на интегрируемую фун - цию s_ab float Сумма значений фун – ции в точках a и b s_even float Сумма значений фун – ции в нечетных точках s_odd float Сумма значений фун – ции в четных точках s_res float Текущий результат интегрирования s_pres float Предыдущий результат интегрирования Заранее спасибо!!
|
|
« Последнее редактирование: 03-12-2007 18:58 от Алексей1153++ »
|
Записан
|
|
|
|
|
nikedeforest
|
|
« Ответ #2 : 28-04-2005 01:20 » |
|
dePPman, и в правду странный вопрос, под винду только сел писать? Созданшь поле ЕДИТ в которое пользователь будет вносить значение точночти, это значение ты будешь загонять в е. Можешь еще сделать, чтобы пользователь заносил значения верхнего и нижнего пределов интегрирования, можешь график построить, дело хозяйское. Можешь сделать как Tuborg сказал, консоль и вперед printf("введите точность"); scanf("%lf"&e);.
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
dePPman
Гость
|
|
« Ответ #3 : 28-04-2005 17:23 » |
|
nikedeforest, надо под Винду, с точностью и пределами вроде разобрался, а вот с шаблонами нет, пишет ошибку!
//--------------------------------------------------------------------------- double integral(double (*)(double));
double f(double); int v; double a,b,x; #pragma argsused int main(void) { cout<<"1.a/(b*x)"<<' '<<"2.a+(1/(x*a+b))"<<endl; cout<<"Vvedite variant function= "; cin>>v; double result;
result = integral( f); printf("%f", result); putchar('\n'); getchar(); return 0; }
double f(double x)/ { double a,b; if (v==1) return a/(b*x); if (v==2) return a+(1/(x*a+b));(вот здесь ошибка!)
}
double integral( double (*f)(double))
{ double a; cout<<"Vvedite a="; cin>>a; double b; cout<<"Vvedite b="; cin>>b; double c; cout<<"Vvedite Niznii predel integrirovania="; cin>>c; double d; cout<<"Vvedite Verhnii predel integrirovania="; cin>>d; int n,i; cout<<"Vvedite kol-vo shagov="; cin>>n; double Eps; cout<<"Vvedite tochnost vycheslenia="; cin>>Eps; getchar(); double summa_ab = f(c) + f(d); double h = (d - c) / n; double summa_nechet = 0, summa_chet; double summa_tek = 0, summa_pred ;
for (i = 2; i < n; i += 2) { summa_nechet += f(c + i * h); } do { summa_chet = 0; summa_pred = summa_tek;
for (i = 1; i < n; i += 2) { summa_chet += f(c + i * h); } summa_tek = h / 3 * (summa_ab + 2 * summa_nechet + 4 * summa_chet);
if (summa_tek == 0) summa_tek = Eps; summa_nechet += summa_chet; n *= 2; h /= 2; } while (fabs((summa_pred - summa_tek) / summa_tek) > Eps);
return fabs(summa_tek); }
|
|
« Последнее редактирование: 03-12-2007 18:59 от Алексей1153++ »
|
Записан
|
|
|
|
michaelprog
Гость
|
|
« Ответ #4 : 29-04-2005 04:55 » |
|
Ворос: А где здесь шаблоны функций? Вижу только указатели.
Если это весь код то не удивительно. double f(double x) {double a,b; //локальные переменные, не имеющие ничего общего с глобальными a и b. //Убери эту строчку if (v==1) return a/(b*x);//здесь следует проверить, что b*x!=0 if (v==2) return a+(1/(x*a+b));//а здесь - что (а*x+b)!=0 }
Скорее всего тривиальное деление на нуль
|
|
« Последнее редактирование: 29-04-2005 05:00 от michaelprog »
|
Записан
|
|
|
|
nikedeforest
|
|
« Ответ #5 : 29-04-2005 07:59 » |
|
Нет тут скорее нужно не тоьлко убрать объявление этих переменных, нужно, чтобы они передавались в формальных параметрах, дело в том, что глобальные переменные вообще не используются в этом коде. Т.е. делай так: double f(double x, double a, double b) { if (v==1) return a/(b*x); if (v==2) return a+(1/(x*a+b));(вот здесь ошибка!)
затем в функции double integral (double (*)(double)) когда будешь вызывать функцию f() добавляй в список параметров переменные a,b. И смело можешь удалять глобальное объявление переменных a,b, т.к. ты их нигде не используешь, т.е. double integral(double (*)(double));
double f(double); int v; double a,b,x; //удаляй отсюда a,b #pragma argsused int main(void)
Саму реализацию алгоритма не проверял, поэтому если это не поможет, значит гд-то еще косяк, но уже в реализации алгоритма. Вопрос такой, а нафиг нужно #pragma argsused?
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
michaelprog
Гость
|
|
« Ответ #6 : 03-05-2005 04:04 » |
|
категорически согласен! Никогда не любил глобальные переменные. Просто Я лентяй и пошел по пути наименьшего сопротивления.
|
|
|
Записан
|
|
|
|
nikedeforest
|
|
« Ответ #7 : 03-05-2005 11:01 » |
|
Просто Я лентяй
Лень-добродетель программистов .
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
dePPman
Гость
|
|
« Ответ #8 : 03-05-2005 11:34 » |
|
Спасибо всем!! в общем с консолью у меня получилось, а вот под Винду нет.(граф. оболочка) Как сделать чтобы пользователь выбрал шаблон, и просто вбил коэфициенты a,b,c? Можно ли так: label+CheckBox и как это связать с основной частью проги которая считает сам интеграл, и еще я делал под консоль через ф-цию, а как теперь реализовать без нее(просто пишет ошибку что не может вычислить, f(c) и f(d), т.е. ф-цию от какого-либо значения)
|
|
|
Записан
|
|
|
|
michaelprog
Гость
|
|
« Ответ #9 : 03-05-2005 12:30 » |
|
Уж сколько раз твердили миру, что ЗДЕСЬ НЕТ ШАБЛОНОВ...dePPmanб ты используешь УКАЗАТЕЛИ на функции для С++Builderэа: кидаешь на форму RadioGroup, Edit'ы (3 шт.). задаешь им нормальные имена, ну вроде таких //где-то в теле класса формы TRadioGroup* Selector; TEdit* A; TEdit* B; TEdit* C;
Дальше - большее. Для Selector задаешь через инспектора объектов свои матем. функции (см. Lines или Items - не помню точное название) ОБЯЗАТЕЛЬНО сохрани порядок: a/(b*x) a+(1/(x*a+b)) После чего в Selector появится две RadioButton. Переходишь на закладку Event и задаешь обработчик события OnChanged (или что-то похожее) и в теле функции пишешь приблизительно такой код: {v = Selector->Items->ItemIndex; }
А потом по нажанию какой-нибудь кнопочки (не забудь кинуть на форму) считываешь из эдитов значение, примерно таким макаром a=StrToIntDef(A->Text,0); Вызываешь функцию интегрирования и УСЁ ЗЫ. Советую сделать следующее //где-нибудь в глобальной области видимости //объявляешь новый тип данных func_ptr - указатель на функцию template double (*func_ptr)(double);
//и определяешь свою функцию double integral(func_ptr);
Согласись - гигиеничнее и читабельнее мог бы посоветовать реализовать твою функцию double f(double x) через массив указателей и не использовать логику анализа значения v. ЗЗЫ. прочитал вопрос до конца - отвечаю. CheckBox не рекомендую, т.к. ты не собираешься считать интеграл сразу от всех функций (CheckBox позволит отметить несколько позиций, а RadioGroup - нет)
|
|
« Последнее редактирование: 20-12-2007 20:18 от Алексей1153++ »
|
Записан
|
|
|
|
nikedeforest
|
|
« Ответ #10 : 03-05-2005 19:24 » |
|
Уж сколько раз твердили миру, что ЗДЕСЬ НЕТ ШАБЛОНОВ... dePPmanб ты используешь УКАЗАТЕЛИ на функции
michaelprog, не горячись, я кажется понял, здесь под шаблоном имеется ввиду a/(b*x) и a+(1/(x*a+b)), а не шаблоны из синтаксиса из С++. template double (*func_ptr)(double);
А вот ты, кажется заговорил о шаблонах из С++. А есть ли смысл использовать здесь шаблоны?
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
michaelprog
Гость
|
|
« Ответ #11 : 04-05-2005 04:18 » |
|
Каюсь, каюсь - очепятка вышла template double (*func_ptr)(double);
конечно должно быть typedef double (*func_ptr)(double);
Еc-но шаблоны функций здесь неуместны, но терминалогия не должна так попираться.
|
|
|
Записан
|
|
|
|
Alf
Гость
|
|
« Ответ #12 : 04-05-2005 06:03 » |
|
конечно должно быть typedef double (*func_ptr)(double);
Должно ли? Эта конструкция действительно компилируется?
|
|
|
Записан
|
|
|
|
nikedeforest
|
|
« Ответ #13 : 04-05-2005 15:04 » |
|
М-да, спорный момент.
|
|
|
Записан
|
ещё один вопрос ...
|
|
|
Alf
Гость
|
|
« Ответ #14 : 04-05-2005 19:53 » |
|
М-да, спорный момент. Переопределение встроенного типа double на указатель на функцию? Спорный - это еще мягко сказано.
|
|
|
Записан
|
|
|
|
michaelprog
Гость
|
|
« Ответ #15 : 05-05-2005 05:09 » |
|
М-да, спорный момент. Переопределение встроенного типа double на указатель на функцию? Спорный - это еще мягко сказано. ПРРР... :? Притормозите ребята. Специально проверил (не люблю быть ослом). Уважаемый Alf случаем не перепутал конструкцию: typedef double (*func_ptr)(double);
со следующей: #define double (*func_ptr)(double);
вот здесь действительно есть чему удивляться А предложенная мною конструкция РАБОТАЕТ как минимум в C++Builde 6.0 . См. такой код: //глобальные unsigned int v; //гораздо удобнее, чем простой int - позволит убрать дну проверку //см. реализацию функции f(double) double a,b; //функции double f1(double x) {if(b*x) return a/(b*x); throw exception();//типа деление на ноль } double f1(double x) {if(x*a+b) return a+(1/(x*a+b)); throw exception();//типа деление на ноль }
//определение нового типа typedef double (*func_ptr)(double);
//а теперь маленький трюк - реализуем функцию-диспетчер с использованием простого массива double f(double x) { staic const func_ptr Functions={&f1, &f2 } //теперь // Function[0] соответствует a/(b*x) // а Function[1] соответствует a+(1/(x*a+b)) //проверим диапазон (на всякий) if (v<2) //если использовать простой int, то потребуется две проверки, а так - я уверен, что v>=0 return Functions[v](x); else{//неясно какую фнкцию вызывать, поэтому делаешь что-нибудь этакое. //напр., выдаешь ошибку или вызываешь функцию оумолчанию } }
Если функций не две а поболее - представлете экономию на проверках? ЗЫ. теперь можете кидать в меня камни
|
|
« Последнее редактирование: 05-05-2005 05:19 от michaelprog »
|
Записан
|
|
|
|
Alf
Гость
|
|
« Ответ #16 : 05-05-2005 06:34 » |
|
А предложенная мною конструкция РАБОТАЕТ как минимум в C++Builde 6.0 . MS Visual C++ V7.1 оказался привередливее.
|
|
|
Записан
|
|
|
|
michaelprog
Гость
|
|
« Ответ #17 : 05-05-2005 09:07 » |
|
MS Visual C++ V7.1 оказался привередливее.
Прошу принять мои искренние соболезнования по пооду Если функций не две а поболее - представлете экономию на проверках?
ЗЫ. полез в стандарт
|
|
« Последнее редактирование: 05-05-2005 09:12 от michaelprog »
|
Записан
|
|
|
|
Alf
Гость
|
|
« Ответ #18 : 05-05-2005 09:31 » |
|
Прошу принять мои искренние соболезнования по пооду Ничего, переживем. Возможно, в виде класса пройдет, ежели вдруг выяснится, что иначе никак.
|
|
|
Записан
|
|
|
|
dePPman
Гость
|
|
« Ответ #19 : 10-05-2005 15:16 » |
|
nikedeforest,здесь под шаблоном имеется ввиду a/(b*x) и a+(1/(x*a+b)), а не шаблоны из синтаксиса из С++. Вы правы! Каюсь!
|
|
|
Записан
|
|
|
|
dePPman
Гость
|
|
« Ответ #20 : 10-05-2005 16:37 » |
|
Не кидайте в меня камнями! Но я не понял как вызвать ф-цию интегрирования?(в консоле понятно, а вот в граф. нет.Я делаю кнопку , например, "расчет" и в что в ней писать???) //---------------------------------------------------------------------------
#include <vcl.h> #pragma hdrstop
#include "Unit1.h" #include "Math.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; unsigned int v; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { TRadioGroup* Selector; TEdit* A; TEdit* B; TEdit* C;
} //---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender) ( кнопка расчета) { a=StrToIntDef(a->Text,0); b=StrToIntDef(b->Text,0); c=StrToIntDef(c->Text,0);
int n=8; double Eps=0.01; double summa_ab = f(a) + f(b); double h = (b - a) / n; double summa_nechet = 0, summa_chet; double summa_tek = 0, summa_pred ;
for (i = 2; i < n; i += 2) { summa_nechet += f(a + i * h); } do { summa_chet = 0; summa_pred = summa_tek;
for (i = 1; i < n; i += 2) { summa_chet += f(a + i * h); } summa_tek = h / 3 * (summa_ab + 2 * summa_nechet + 4 * summa_chet);
if (summa_tek == 0) summa_tek = Eps; summa_nechet += summa_chet; n *= 2; h /= 2; } while (fabs((summa_pred - summa_tek) / summa_tek) > Eps);
return fabs(summa_tek); } double result; result = integral( f); Edit4->Text=FloatToStr(result);
} //--------------------------------------------------------------------------- void __fastcall TForm1::SelectorClick(TObject *Sender) { v = Selector->Items->ItemIndex; } //---------------------------------------------------------------------------
+ пишет еще ошибку [C++ Error] Unit1.cpp(27): E2034 Cannot convert 'int' to 'TEdit *' [C++ Error] Unit1.cpp(28): E2034 Cannot convert 'int' to 'TEdit *' [C++ Error] Unit1.cpp(29): E2034 Cannot convert 'int' to 'TEdit *' [C++ Error] Unit1.cpp(34): E2316 'ItemIndex' is not a member of 'TStrings' staic const func_ptr Functions={&f1, &f2 } !!!Объясни как это использовать в расчете, выходит незачем использовать V !!!!double a,b; --- а это в кнопку расчета//функции double f1(double x) {if(b*x) return a/(b*x); throw exception();//типа деление на ноль } double f1(double x) {if(x*a+b) return a+(1/(x*a+b)); throw exception();//типа деление на ноль } //определение нового типа typedef double (*func_ptr)(double); //а теперь маленький трюк - реализуем функцию-диспетчер с использованием простого массива double f(double x) {
|
|
« Последнее редактирование: 03-12-2007 19:00 от Алексей1153++ »
|
Записан
|
|
|
|
michaelprog
Гость
|
|
« Ответ #21 : 11-05-2005 04:50 » |
|
начнем по-порядку: 1) //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { TRadioGroup* Selector; TEdit* A;// Это что такое???? TEdit* B;// TEdit* C;// } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { a=StrToIntDef(a->Text,0); //А теперь сюда b=StrToIntDef(b->Text,0); c=StrToIntDef(c->Text,0);
// и т.д. }
Это что такое у тебя в конструкторе формы??? Я понимаю, если ты решил динамически создавать компоненты, но в твоей задаче этого не требуется. Все это должно быть в самой форме //--------------------------------------------------------------------------- class TForm1(TComponent* Owner) : TForm(Owner) { TRadioGroup* Selector; TEdit* A; TEdit* B; TEdit* C; // и т.д. }
Более того, указанный код должен сгенерировать Builder, когда ты конструируешь форму. Обрати внимание на то, что в функции обработки нажатия кнопки Button2Click(TObject *Sender) ты используешь a->Text должно быть А->Text - отсюда три первые ошибки 2) смотрим далее void __fastcall TForm1::SelectorClick(TObject *Sender) {v = Selector->Items->ItemIndex; }
На память не поню, но попробуй так: v = Selector->ItemIndex;3)что значит staic const func_ptr Functions={&f1, &f2 } !!!Объясни как это использовать в расчете, выходит незачем использовать V !!!!
если не понял, то не нужно использовать. А работает это следующим образом. Ты создашь массив указателей на функции, которые вычисляют значение, в данном случае при вызове Functions[0](x) вызывается функция f1(x)? вычисляющая a/(b*x); Идем дальше, функция SelectorClick(TObject *Sender) обеспечивает автоматическое запоминание типа функции, которая подлежит интегрированию, при переключении на другую RadioButton в Selector. Теперь при нажании на Button2 вызывается Button2Click, которая в свою очередь integral( f), та вызывает f(x), в недрах которой и происзодит самое интересное. Поскольку мы уже знаем значение v достаточно проиндексиовать массив указателей на функции. Сравни: return Function[v](x);
и следующее if(v==0) return a/(b*x); if(v==1) return a+(1/(x*a+b));
Обрати внимание, что V, a, b - глобальные данные, в противном случае их необходимо передвать в качетсве аргументов функций. при увеличении числа вариантов ункций для интегрирования в первом случае нпейдется дописать сами функции и увеличить массив, а логика вызова не изменится (число проверок во время выполнения не увеличится), а во втором случае число проверок возрастет пропорционально числу добавленных функций. ЫЗ. рекомендую давать осмысленные названия компонентам, например, вместо Button2 - IntegrateButton. Помимо того, то это рациональ, это поможет разобраться в собственном коде по прошествии времени.
|
|
|
Записан
|
|
|
|
dePPman
Гость
|
|
« Ответ #22 : 14-05-2005 08:42 » |
|
Не могли бы помочь, уже надо сдавать прогу в ближайшее время, и еще препод не может помочь! Пользуясь вашими советами, переделал программу, но все равно выдает ошибки:[C++ Error] Unit1.cpp(21): E2141 Declaration syntax error [C++ Error] Unit1.cpp(36): E2141 Declaration syntax error [C++ Error] Unit1.cpp(106): E2451 Undefined symbol 'f1' [C++ Error] Unit1.cpp(109): E2451 Undefined symbol 'f2' //--------------------------------------------------------------------------- #include <exception> #include <vcl.h> #include <Math.h> #pragma hdrstop
#include "Unit1.h"
//--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; unsigned int v; double a,b; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { double f1(double x) {if(b*x) return a/(b*x); throw exception(); } double f2(double x) {if(x*a+b) return a+(1/(x*a+b)); throw exception(); }
typedef double (*func_ptr)(double);
double f(double x) { staic const func_ptr Functions={&f1, &f2 } } if (v<2) / return Functions[v](x); if(v>2) { Label7->Caption="Neiasno kakuy function vysyvat!";
} } double integral(double a, double b, double c, double d, int n, double Eps, double (*f)(double)) {
{ int i; double summa_ab = f(c) + f(d); double h = (d - c) / n; double summa_nechet = 0, summa_chet; double summa_tek = 0, summa_pred ;
for (i = 2; i < n; i += 2) { summa_nechet += f(c + i * h); } do { summa_chet = 0; summa_pred = summa_tek;
for (i = 1; i < n; i += 2) { summa_chet += f(c + i * h); }
summa_tek = h / 3 * (summa_ab + 2 * summa_nechet + 4 * summa_chet);
if (summa_tek == 0) summa_tek = Eps; summa_nechet += summa_chet; n *= 2; h /= 2; } while (fabs((summa_pred - summa_tek) / summa_tek) > Eps);
return fabs(summa_tek); }
} //---------------------------------------------------------------------------
void __fastcall TForm1::IntegrateButtonClick(TObject *Sender) { double a,b,c,d,Eps,n,result;
Label7->Caption="";
try {
a=StrToFloat(A->Text); b=StrToIntDef(B->Text); c=StrToIntDef(C->Text); d=StrToIntDef(D->Text); Eps=StrToIntDef(EPS->Text); n=StrToIntDef(N->Text); } catch(...) { Label7->Caption="Nevernii format vvedennih chisel!"; Abort(); } if (v==1) result=integral(a=StrToFloat(A->Text), b=StrToIntDef(B->Text), c=StrToIntDef(C->Text),d=StrToIntDef(D->Text),Eps=StrToIntDef(EPS->Text),n=StrToIntDef(N->Text),f1); result1->Text=FloatToStr(result); if (v==2) result=integral(a=StrToFloat(A->Text), b=StrToIntDef(B->Text), c=StrToIntDef(C->Text),d=StrToIntDef(D->Text),Eps=StrToIntDef(EPS->Text),n=StrToIntDef(N->Text),f2); result1->Text=FloatToStr(result); } //--------------------------------------------------------------------------- void __fastcall TForm1::SelectorClick(TObject *Sender) { v = Selector->ItemIndex; } //--------------------------------------------------------------------------- void __fastcall TForm1::ExitClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::NewClick(TObject *Sender) { Label7->Caption=""; A->Clear(); B->Clear(); C->Clear(); D->Clear(); EPS->Clear(); N->Clear(); result1->Clear(); } //---------------------------------------------------------------------------
Заранее спасибо!!
|
|
« Последнее редактирование: 03-12-2007 19:01 от Алексей1153++ »
|
Записан
|
|
|
|
dePPman
Гость
|
|
« Ответ #23 : 14-05-2005 13:09 » |
|
Ошибки:double f1(double x) {if(b*x) -->[C++ Error] Unit1.cpp(21): E2141 Declaration syntax error return a/(b*x); throw exception(); } double f2(double x) {if(x*a+b) return a+(1/(x*a+b)); throw exception();
double f(double x){-->[C++ Error] Unit1.cpp(36): E2141 Declaration syntax errorstaic const func_ptr Functions={&f1, &f2 } } if (v<2) return Functions[v](x);result=integral(a=StrToFloat(A->Text), b=StrToIntDef(B->Text), c=StrToIntDef(C->Text),d=StrToIntDef(D->Text),Eps=StrToIntDef(EPS->Text),n=StrToIntDef(N->Text),f1); -->[C++ Error] Unit1.cpp(106): E2451 Undefined symbol 'f1'И варнинги: [C++ Warning] Unit1.cpp(111): W8004 'n' is assigned a value that is never used [C++ Warning] Unit1.cpp(111): W8004 'Eps' is assigned a value that is never used [C++ Warning] Unit1.cpp(111): W8004 'd' is assigned a value that is never used [C++ Warning] Unit1.cpp(111): W8004 'c' is assigned a value that is never used [C++ Warning] Unit1.cpp(111): W8004 'b' is assigned a value that is never used [C++ Warning] Unit1.cpp(111): W8004 'a' is assigned a value that is never used
|
|
« Последнее редактирование: 03-12-2007 19:02 от Алексей1153++ »
|
Записан
|
|
|
|
michaelprog
Гость
|
|
« Ответ #24 : 14-05-2005 20:12 » |
|
сначала хотел расписать ошибки здесь, но понял, что это слишком... лови проект (Builder6) - прикрепляю ZIP. если у тебя ранняя версия, то посмотри мои исходники и исправь свои. постарался максимально близко сымитировать твой проект. обрати снимание на комментарии. ЫЗ. проект точно компилится и считает(т.е. интегрирует), за точность алгоритма отвечаешь сам.
|
|
|
Записан
|
|
|
|
dePPman
Гость
|
|
« Ответ #25 : 17-05-2005 20:01 » |
|
michaelprog, очень благодарен ВАМ!!(не ожидал!!) ))))))))))))))))))))))
|
|
|
Записан
|
|
|
|
michaelprog
Гость
|
|
« Ответ #26 : 18-05-2005 04:07 » |
|
незачто, тем более, что это заняло не больше получаса...
|
|
|
Записан
|
|
|
|
WBTRAP
Гость
|
|
« Ответ #27 : 17-05-2006 16:25 » |
|
Спасибо!!! За архивчик. Правда он немного не сразу скачался.
|
|
|
Записан
|
|
|
|
|