Программа вычисления определенного интеграла методом прямоугольников с визуализацией решения

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    350,75 Кб
  • Опубликовано:
    2012-04-03
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Программа вычисления определенного интеграла методом прямоугольников с визуализацией решения













Пояснительная записка к курсовому проекту

по теме: «Программа вычисления определенного интеграла методом прямоугольников с визуализацией решения»

Дисциплина: Программирование и основы алгоритмизации

ВВЕДЕНИЕ

В сегодняшнем информационном обществе, программные продукты находят широкое применение в процессе обучения и являются хорошими помощниками преподавателей. Образовательное программное обеспечение - вид программного обеспечения, главным назначением которого является обучение или развитие некоторых навыков. Принципы обучения, применённые в таких программах, могут быть совершенно различными, это может быть: игра, тест, среда программирования и т.д. Возрастная аудитория пользователей такого программного обеспечения занимает широчайший диапазон (от 3 лет и выше). Программа вычисления определенного интеграла методом прямоугольников с визуализацией решения рассчитана для обучения на уроках математики школьников старших классов. Обычно такое ПО создаётся с учётом удобства его отображения проектором на экране и использования в сети компьютеров.

1. АНАЛИЗ ЗАДАЧИ И ОПРЕДЕЛЕНИЕ ТРЕБОВАНИЙ К РАЗРАБАТЫВАЕМОЙ ПРОГРАММЕ

.1 Назначение программы, ее пользователи, основные функции и цели, которые преследуются при разработке

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

.2 Теоретические основы разработки

Программа реализует вычисление определенного интеграла методом прямоугольников. Метод прямоугольников - метод численного интегрирования <#"551420.files/image001.gif"> является элементарным и не подвергается дальнейшему разбиению, значение интеграла можно найти по

Формуле левых прямоугольников:


Формуле правых прямоугольников:

Формуле средних прямоугольников:

В случае разбиения отрезка интегрирования на  элементарных отрезков приведённые выше формулы применяются на каждом из этих элементарных отрезков между двумя соседними узлами. В результате, получаются составные квадратурные формулы


Для левых прямоугольников:

Для правых прямоугольников:

Для средних прямоугольников:


Поскольку составные квадратурные формулы являются ни чем иным, как суммами, входящими в определение интеграла Римана <#"551420.files/image009.gif"> они сходятся к точному значению интеграла. Соответственно, с увеличением точность получаемого по приближённым формулам результата возрастает.

.3 Выбор инструментальных средств разработки

Для создания программы была выбрана среда визуальной разработки приложений Visual C++ 2008. Данное инструментальное средство было выбрано вследствие возможности создания в нем удобного пользовательского интерфейса, а так же хорошего встроенного компилятора, позволяющего получать быстро и надежно работающий исполняемый модуль.

2. ПРОЕКТНАЯ ЧАСТЬ РАЗРАБОТКИ

.1 Разработка пользовательского интерфейса

Пользовательский интерфейс программы вычисления определенного интеграла методом прямоугольников с визуализацией решения предельно прост и интуитивно понятен. Он разработан таким образом, что любой пользователь ПК способен самостоятельно и быстро разобраться с программой. Интерфейс рассчитан на русскоязычных пользователей. Доступ ко всем функциям возможен с помощью кнопок и других компонентов главного окна (рис. 2.1.1), компоненты объединены в группы по своим функциям для наибольшей наглядности интерфейса и простоты использования программы. Большую часть главного окна занимает область, отведенная на графические изображения. Для лучшего понимания пользователем (школьником) предмета исследования данной программой на главной форме предусмотрена кнопка «Справка», при нажатии которой появляется вторая форма (рис. 2.1.2) с пояснениями.

Рис. 2.1.1

Рис. 2.1.2

3. РЕАЛИЗАЦИЯ ПРОГРАММЫ НА ЯЗЫКЕ С++

.1 Архитектура программы

Программа состоит из двух форм. Одна- главная, на ней размещены основные компоненты для ввода данных и вывода результатов, Вторая служит для вывода справки, на ней содержится только текстовая информация не изменяемая пользователем.

.2 Выбор стандартных визуальных и не визуальных компонентов

При создании программы были использованы следующие компоненты панели Toolbox интерфейса Visual C++: colorDialog и pictureBox- для создания графических изображений; comboBox, textBox, numericUpDown, label- для ввода и вывода данных; button и radioButton- для управления и выбора функций; а также panel и groupBox.

.3 Описание основных функций

: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)- основная функция программы, при ее выполнении производится расчет интеграла исходя из введенных данных, выполняется визуализация решения и вывод результатов. Данная функция обращается к процедурам разработанным при создании программы:funkcia (double &x1)- служит для ввода исследуемой функциональной зависимости, возвращает значение введенной функции от входного x1, блок- схема приведена рис. 3.1;check(double &x1, double &x2)- служит для проверки введенных пределов интегрирования;checktoch(double &tochnost)- для проверки введенной точности;LEVPR, double PRAVPR, double SREDPR(double &buf,double &x2,int &n,double &delX, double &delY)- эти функции реализуют методы левых, правых и средних прямоугольников соответственно, возвращают значение интеграла. Блок- схемы данных функций индентичны рис. 3.2.

Еще одна функция: private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)- служит для создания второй формы.

Рис. 3.1

Рис. 3.2

4. РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ ПРОГРАММЫ

Тест 1. Соответствие результатов выдаваемых программой результатам, полученным расчетным путем.

Результат работы программы на рис. 4.1.

Рис. 4.1

При пределах интегрирования -3 и 4 и точности вычисления 0.01 программа выдает значение интеграла равное 50.87 (расчет методом средних прямоугольников). Посчитаем интеграл по формуле:

как видим, результаты совпадают.

Тест 2. Программа не должна зависеть от конкретной функциональной зависимости, поэтому предложим программе визуализировать нахождение интеграла допустим от логарифмической функции. Результат работы программы на рис. 4.2.

Рис. 4.2

Результат работы программы вполне удовлетворительный.

программа разработка интерфейс архитектура

Тест 3. Работа программы на маленьком отрезке интегрирования.

Результат работы программы на рис. 4.3. Отрезок на котором выполнялось интегрирование составлял всего 0,00531, но программа отлично справилась с поставленной перед ней задачей, наилучшим образом отмасштабировала график, а также вывела значени меток по координатным осям.

Рис. 4.3

Тест 4. Реакция программы на случай когда отрезок интегрирования не соответствует области определения функции.

Предоставим программе посчитать интеграл логарифмической функции в пределах от -3 до 2, результат работы программы на рис. 4.4.

Рис. 4.4

Программа требует изменить пределы интегрирования, это вполне адекватная реакция на данную задачу.

Тест 5. Реакция программы на невведенный метод решения, перепутанные местами верхний и нижний пределы интегрирования и на некорректно введенные пределы (рисунки 4.5, 4.6, 4.7 соответственно).

Рис. 4.5

Рис 4.6

Рис. 4.7

На все случаи программа реагирует соответствующей ошибкой.

Тест 6. Оценка скорости выполнения вычислений.

Вычисление интеграла от квадратичной функции в пределах от -100 до 100 с точностью 0,05 заняло менее 5 секунд, этот факт говорит о хорошей вычислительной скорости программы

ЗАКЛЮЧЕНИЕ

Программа вычисления определенного интеграла методом прямоугольников с визуализацией решения представляет собой готовый программный продукт, пригодный для использования. Данная программа должна помочь школьникам в усвоении учебного курса. Возможности усовершенствования разработки довольно обширны. Например, можно создать возможность пользователю самому прописывать или хотя бы выбирать из списка исследуемую функцию.

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

1.  Либерти,Дж. Освой самостоятельно C++ за 21 день / Дж. Либерти; пер. с англ. - М.: Вильямс, 2000. - 816 с.

2.      Подбельский В. Язык С++: Учебное пособие для ВУЗов / В.В. Подбельский - М.: Финансы и статистика, 2002. - 560 с.

.        Ник Рендольф <http://www.ozon.ru/context/detail/id/6242077/> Visual C++ 2010 - М.: ЗАО «Издательство БИНОМ», 2011. 224 с.

ПРИЛОЖЕНИЕ

#pragma endregionxx,yy,prexx,preyy;funkcia (double &x1) {yk;(x1==0) x1=0.00000001;//чтоб лишний раз через ноль перескочил=x1*x1;=-yk;((Convert::ToString(yk)=="NaN")){ textBox1->Text="Измените";//исключения проверяю->Text="Измените"; yk=0;}yk;

}check(double &x1, double &x2) {

//конвертируем текст в первом поле в число {= Convert::ToDouble(textBox1->Text);

}(...) {->Focus();

}

//конвертируем текст во втором поле в число {= Convert::ToDouble(textBox2->Text);

}(...) {->Focus();

}true;

}checktoch(double &tochnost) { //проверка ввода точности{tochnost = Convert::ToDouble(textBox3->Text);}(...) {textBox3->Focus(); MessageBox::Show("Значение погрешности введено некорректно");}true;

}LEVPR(double &buf,double &x2,int &n,double &delX, double &delY){// метод левых прямоугольников (считает интригал)y,S,x1,post;postX1,postY,xx,yy;(x1=buf;x1<x2;x1=x1+((x2-buf)/n))

{yy=Convert::ToInt64(funkcia(x1)*delY);=x1+((x2-buf)/n);=Convert::ToInt64((x1+((x2-buf)/n))*delX);=Convert::ToInt64(funkcia(post)*delY);=funkcia(x1); =x1+((x2-buf)/n);(abs(yy)<abs(postY)&&((yy>0&&postY>0)||(yy<0&&postY<0))&&postX1<=x2*delX )

{=S+funkcia(post)*((x1+((x2-buf)/n))-x1);} //вычисление интеграла{=S+funkcia(post)*((x1+((x2-buf)/n))-x1);}//вычисление интеграла

}S;

}PRAVPR(double &buf,double &x2,int &n,double &delX, double &delY){y,S,x1,post;postX1,postY,xx,yy;(x1=buf;x1<x2;x1=x1+((x2-buf)/n))

{yy=Convert::ToInt64(funkcia(x1)*delY);=x1+((x2-buf)/n);=Convert::ToInt64((x1+((x2-buf)/n))*delX);=Convert::ToInt64(funkcia(post)*delY);=funkcia(x1); =x1+((x2-buf)/n);(abs(yy)<abs(postY)&&((yy>0&&postY>0)||(yy<0&&postY<0))&&postX1<=x2*delX ) {=S+y*((x1+((x2-buf)/n))-x1);}(abs(yy)>=abs(postY)&&((yy>0&&postY>0)||(yy<0&&postY<0))&&postX1<=x2*delX) {=S+y*((x1+((x2-buf)/n))-x1);}//вычисление интеграла

}S;

}SREDPR(double &buf,double &x2,int &n,double &delX, double &delY){

double y,S,x1,post;postX1,postY,xx,yy;(x1=buf;x1<x2;x1=x1+((x2-buf)/n))

{yy=Convert::ToInt64(funkcia(x1)*delY);=x1+((x2-buf)/n);=Convert::ToInt64((x1+((x2-buf)/n))*delX);=Convert::ToInt64(funkcia(post)*delY);=funkcia(x1);=x1+((x2-buf)/n);(abs(yy)<abs(postY)&&((yy>0&&postY>0)||(yy<0&&postY<0))&&postX1<=x2*delX) {=S+(y+(funkcia(post)-y)/2)*((x1+((x2-buf)/n))-x1);}//вычисление интеграла(abs(yy)>=abs(postY)&&((yy>0&&postY>0)||(yy<0&&postY<0))&&postX1<=x2*delX) {=S+(funkcia(post)+(y-funkcia(post))/2)*((x1+((x2-buf)/n))-x1);}//вычисление интеграла

}S;

}y;: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {->Image = System::Drawing::Bitmap(pictureBox1->Size.Width,->Size.Height);::Drawing::Graphics^ g = ::Drawing::Graphics::FromImage(pictureBox1->Image);::Drawing::Pen^ pen = System::Drawing::Pen(colorDialog1->Color);::Drawing::Brush^ brush = System::Drawing::SolidBrush(colorDialog1->Color);x1,x2;=1;=1;n;//число прямоугольниковshag,//шаг в циклах, т.е. приращение по оси X;//разность между верхним и нижним пределами интегрирования, необходима для нахождения шага(radioButton1->Checked==true) n=Convert::ToInt64(numericUpDown1->Value);maxY,minY;(radioButton2->Checked==true) n=6;(check(x1,x2)&&(x2>x1))

{double delX;((x1<=0)&&(x2>=0))

{delX=(600/(abs(x1)+abs(x2)));}{delX=600/(abs(x2-x1));}

//Смещение по оси Х:sdvigX,sdvigY;(x1<0) =Convert::ToInt64(abs(x1)*delX);sdvigX=Convert::ToInt64(-x1*delX);buf;=sdvigX+80;//чтобы справа умещалась шкала X=x1;//необходим для запоминания Х1 =abs(x2-x1);=0.001*raznostX;

//Поиск наибольшего и наименьшего Y -необходимо для масштабирования=0;=0;srY;(x1=x1;x1<=(x2);x1=x1+shag)

{=funkcia(x1);///////////////////////////////////////////////////////////////////////////////////////////((srY>maxY)) maxY=srY;((srY<minY)) minY=srY;}(textBox1->Text=="Измените") MessageBox::Show("Измените пределы интегрирования");

{=buf;delY;

//единичный отрезок по оси Y (m2):((minY<=0)&&(maxY>=0))

{delY=(500/(abs(minY)+abs(maxY)));}{delY=500/(abs(maxY-minY)); }

//Смещение по оси Y:(minY<0) sdvigY=Convert::ToInt64(abs(minY)*delY);sdvigY=0;=Convert::ToInt64(x1*delX);=funkcia(x1);ddelY;=1000;(abs(maxY-minY)<0.001) ddelY=1000000000000;=Convert::ToInt64(y*delY);m11,m22;=-(maxY)*delY;//для изменения координаты черточки единичного отрезка на оси Y

m11=buf*delX;//для изменения координаты черточки единичного отрезка на оси XpointX;//для циферок единичных отрезковpointY;//для циферок единичных отрезковkolX, kolY;=Convert::ToInt64(numericUpDown2->Value);//количество меток по оси X=Convert::ToInt64(numericUpDown3->Value);//количество меток по оси YiY,iX;=buf; iY=-maxY; if (abs(maxY-Convert::ToInt64(maxY))<0.0000001) iY=-Convert::ToInt64(maxY);=Convert::ToString(iX) ;=Convert::ToString(iY);(x1=x1;x1<=(x2);x1=x1+shag)

{ =funkcia(x1); /=Convert::ToInt64(y*delY);=Convert::ToInt64(x1*delX);>DrawLine(pen,prexx+sdvigX,preyy+sdvigY+40,xx+sdvigX,yy+sdvigY+40);//рисую график

//рисую единичные отрезки на оси X:>DrawLine(pen,50,sdvigY+40,726,sdvigY+40);// оззь Х>DrawString(pointX,fontDialog1->Font,brush,sdvigX+m11,sdvigY+40);//метки единичных отрезков по оси X>DrawString(pointY,fontDialog1->Font,brush,3,sdvigY-m22+40);//метки единичных отрезков ось Y

//выбор меток по оси Y=m22+(abs(-minY+maxY)/kolY)*delY; iY=iY+abs(maxY-minY)/kolY; iY=iY*ddelY; iY=Convert::ToInt64(iY); iY=iY/ddelY; pointY=Convert::ToString(iY) ;

//метки по оси Х=m11+(abs(x2-buf)/kolX)*delX; iX=iX+abs(x2-buf)/kolX; iX=iX*1000000000; iX=Convert::ToInt64(iX); iX=iX/1000000000; pointX=Convert::ToString(iX);

//манипуляции с триллиардами для округления =xx;=yy;}

//выбор количества интервалов в соответствии с точностьюS;//значение интеграла=0;preX1,post;v;=0;postX1, postY ;//необходимы для рисования прямоугольниковi;tochnost;=buf;((comboBox1->Text=="Метод левых прямоугольников")||(comboBox1->Text=="Метод правых прямоугольников")||(comboBox1->Text=="Метод средних прямоугольников"))

{((radioButton2->Checked==true)&&(checktoch(tochnost)))

{=3;=0;preS;=tochnost*10;//2*S+tochnost;//чтобы выполнилось условие которое ниже(abs(S-preS)>abs(tochnost))

{preS=S;=0;(comboBox1->Text=="Метод левых прямоугольников")

{S=LEVPR(buf,x2,n,delX,delY);

}(comboBox1->Text=="Метод правых прямоугольников")

{ S=PRAVPR(buf,x2,n,delX,delY);

}(comboBox1->Text=="Метод средних прямоугольников")

{=SREDPR(buf,x2,n,delX,delY);

}=n*2;

}

}(radioButton1->Checked==true)

{ (comboBox1->Text=="Метод левых прямоугольников")

{S=LEVPR(buf,x2,n,delX,delY);

}(comboBox1->Text=="Метод правых прямоугольников")

{ S=PRAVPR(buf,x2,n,delX,delY);

}(comboBox1->Text=="Метод средних прямоугольников")

{=SREDPR(buf,x2,n,delX,delY);}}

//визуализация методов=0;(x1=buf;x1<=x2;x1=x1+((x2-buf)/n))

{ double mnx=x2-(x2-buf)/n;y2; y2=Convert::ToInt64((y2=funkcia(mnx))*delY);=funkcia(x1);=Convert::ToInt64(x1*delX);=Convert::ToInt64(y*delY);=x1+((x2-buf)/n);=Convert::ToInt64((x1+((x2-buf)/n))*delX);=Convert::ToInt64(funkcia(post)*delY);

//визуализация метода левых прямоугольников(comboBox1->Text=="Метод левых прямоугольников")

{g->DrawLine(pen,xx+sdvigX,sdvigY+40,xx+sdvigX,yy+sdvigY+40);//вертикальные линии(abs(funkcia(post)-funkcia(x2))<0.001) g->DrawLine(pen,postX1+sdvigX,sdvigY+40,postX1+sdvigX,postY+sdvigY+40);//чтобы строило последнюю вертикальную линию даже в том случае если интервал нельзя поделить на равные части(x2-post<0.000001) g->DrawLine(pen,xx+sdvigX,postY+sdvigY+40,Convert::ToInt64(x2*delX)+sdvigX,postY+sdvigY+40); //чтобы строил последнюю горизонтальную линию((abs(funkcia(post)-funkcia(x2))<0.000001)&&(x2-post<0.000001)) g->DrawLine(pen,xx+sdvigX,postY+sdvigY+40,xx+sdvigX,y2+sdvigY+40);//чтобы дорисовал предпосл вертикальную линию(abs(yy)<abs (postY)&&((yy>0&&postY>0)||(yy<0&&postY<0)) &&postX1<=x2*delX) {g->DrawLine (pen,xx+sdvigX,postY+sdvigY+40,postX1+sdvigX,postY+sdvigY+40);>DrawLine (pen,xx+sdvigX,yy+sdvigY+40,xx+sdvigX,postY+sdvigY+40);}(abs(yy)>=abs(postY)&& ((yy>0&&postY>0)|| (yy<0&&postY<0))&&postX1<=x2*delX) {g->DrawLine (pen,postX1+sdvigX,postY+sdvigY+40,xx+sdvigX,postY+sdvigY+40);

}//вычисление интеграла

{g->DrawLine (pen,xx+sdvigX,sdvigY+40,xx+sdvigX,yy+sdvigY+40);//вертикальные линии(abs(funkcia(post)-funkcia(x2))<0.000001)g-> DrawLine (pen,postX1+sdvigX,sdvigY+40,postX1+sdvigX,postY+sdvigY+40);//чтобы строило последнюю вертикальную линию даже в том случае если интервал нельзя поделить на равные части(x2-post<0.000001) g-> DrawLine (pen,xx+sdvigX,yy+sdvigY+40,Convert::ToInt64(x2*delX)+sdvigX,yy+sdvigY+40); // чтобы строил последнюю горизонтальную линию(abs(yy)<abs(postY)&&((yy>0&&postY>0)||(yy<0&&postY<0))&&postX1<=x2*delX) {g->DrawLine (pen,xx+sdvigX,yy+sdvigY+40,postX1+sdvigX,yy+sdvigY+40);

}// дорисовываю вертикальные линии(abs(yy)>=abs(postY)&&((yy>0&&postY>0)||(yy<0&&postY<0))&&postX1<=x2*delX) {g->DrawLine(pen,postX1+sdvigX,yy+sdvigY+40,xx+sdvigX,yy+sdvigY+40);>DrawLine (pen,postX1+sdvigX,postY+sdvigY+40,postX1+sdvigX,yy+sdvigY+40);//дорисовываю вертикальные линии

}(x2-post<0.0001) g->DrawLine (pen,postX1+sdvigX,postY+sdvigY+40,postX1+sdvigX,yy+sdvigY+40);//чтобы дорисовывало последнюю вертикальную линию

}(comboBox1->Text=="Метод средних прямоугольников")

{>DrawLine (pen,xx+sdvigX,sdvigY+40,xx+sdvigX,yy+sdvigY+40);//вертикальные линии(abs(funkcia(post)-funkcia(x2))<0.001) g->DrawLine (pen,postX1+sdvigX,sdvigY+40,postX1+sdvigX,postY+sdvigY+40);//чтобы строило последнюю вертикальную линию даже в том случае если интервал нельзя поделить на равные части(x2-post<0.0001) g->DrawLine(pen,xx+sdvigX,postY-(postY-yy)/2+sdvigY+40,Convert::ToInt64(x2*delX)+sdvigX,postY-(postY-yy)/2+sdvigY+40);//чтобы строил последнюю горизонтальную линию((abs(funkcia(post)-funkcia(x2))<0.001) && (x2-post<0.000001)) g->DrawLine(pen,xx+sdvigX,yy+sdvigY+40,xx+sdvigX,postY-((postY-yy)/2)+sdvigY+40);//чтобы дорисовал предпосл вертикальную линию(abs(yy)<abs(postY)&&((yy>0&&postY>0)|| (yy<0&&postY<0))&&postX1<=x2*delX ) {g->DrawLine(pen,xx+sdvigX,postY-(postY-yy)/2+sdvigY+40,postX1+sdvigX,postY-(postY-yy)/2+sdvigY+40);>DrawLine(pen,xx+sdvigX,yy+sdvigY+40,xx+sdvigX,postY-((postY-yy)/2)+sdvigY+40);// дорисовываю вертикальные линии

}//вычисление интеграла(abs(yy)>abs(postY)&& ((yy>0&&postY>0)|| (yy<0&&postY<0)) &&postX1<=x2*delX) {g->DrawLine(pen,postX1+sdvigX,yy+(postY-yy)/2+sdvigY+40,xx+sdvigX,yy+(postY-yy)/2+sdvigY+40);>DrawLine(pen,postX1+sdvigX,postY+((yy-postY)/2) +sdvigY+40, postX1+sdvigX,postY+sdvigY+40);//дорисовываю вертикальные линии

}//вычисление интеграла(x2-post<0.0001) g->DrawLine(pen,postX1+sdvigX,postY+((yy-postY)/2)+sdvigY+40,postX1+sdvigX,postY+sdvigY+40);//чтобы дорисовывал последнюю вертикальную линию

}

}(radioButton2->Checked==true) {(tochnost<1)

{S=Convert::ToInt64(S/tochnost); S=S*tochnost;}{S=Convert::ToInt64(S);}}->Text=Convert::ToString(-S);->BackColor=colorDialog1->Color;->Text=Convert::ToString(n);//вывод количества интервалов разбиения

}

{MessageBox::Show("Не выбран метод решения");}

}

}MessageBox::Show("Проверте введенные пределы интегрирования");(x1==x2) {MessageBox::Show("Интеграл =0, данный случай визуализации не подлежит!"); label4->Text="0";}>~Brush();>~Pen();>~Graphics();->Invalidate();

}: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) {

}: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) {^ f = gcnew dopforma();>Hide();>ShowDialog();>Show();

}: System::Void radioButton1_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {->Enabled=false;->Enabled=true;

}: System::Void radioButton2_CheckedChanged(System::Object^ sender, System::EventArgs^ e) {//вторую форму создаю->Enabled=false;->Enabled=true;

}

};

}


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!