Создание приложения, которое будет производить построение графиков функций по заданному математическому выражению. Разработка программы "Генератор математических функций". Создание мастера функций для ввода математического выражения, тестирование.
Программная реализация 4. Наиболее перспективным считается объектно-ориентированный подход (ООП) проектирования. Данная дипломная работа нацелена на создание приложения, которое будет производить построение графиков функций по заданному математическому выражению. Построение графиков является одним из самых важных процессов в математике, физике, теории вероятностей, математической статистике и во многих других дисциплинах. Приложение будет реализовано в среде Microsoft Visual Studio 2010 [2] с использованием технологии Windows Forms [3]. myPane->XAxis->MajorTic->IsOpposite = false; myPane->XAxis->MinorTic->IsOpposite = false; myPane->YAxis->MajorTic->IsOpposite = false; myPane->YAxis->MinorTic->IsOpposite = false; //Рисуем сетку по X myPane->XAxis->MajorGrid->IsVisible=false; myPane->XAxis->MajorGrid->DashOn=5; myPane->XAxis->MajorGrid->DashOff=5; myPane->XAxis->MajorGrid->Color=System::Drawing::Color::Gray; myPane->XAxis->Color=System::Drawing::Color::Gray; //Рисуем сетку по Y myPane->YAxis->MajorGrid->IsVisible=false; myPane->YAxis->MajorGrid->DashOn=5; myPane->YAxis->MajorGrid->DashOff=5; myPane->YAxis->MajorGrid->Color=System::Drawing::Color::Gray; myPane->YAxis->Color=System::Drawing::Color::Gray; //****************************************************************************** // Добавляем информацию по регистрам вывода точек //****************************************************************************** RollingPointPairList ^list1= gcnew RollingPointPairList (10000); RollingPointPairList ^list2= gcnew RollingPointPairList (10000); RollingPointPairList ^list3= gcnew RollingPointPairList (10000); // Выводим пустые линии графиков на экран LineItem ^F1Curve = myPane->AddCurve( Функция f(x), list1, Color::Blue, SymbolType::None); LineItem ^F2Curve = myPane->AddCurve( Функция g(x), list2, Color::Red, SymbolType::None); LineItem ^F3Curve = myPane->AddCurve( Функция h(x), list3, Color::Green, SymbolType::None); // Ширина линии F1Curve->Line->Width=2; F2Curve->Line->Width=2; F3Curve->Line->Width=2; // Задаем что линии гладкии F1Curve->Line->IsSmooth=true; F2Curve->Line->IsSmooth=true; F3Curve->Line->IsSmooth=true; // Обновлем данные об осях zedGraphControl1->AxisChange (); // Обновляем график zedGraphControl1->Invalidate(); } Далее производится ввод математического выражения с помощью клавиатуры, либо с помощью мастера функций. На первом этапе используем функцию SystemStringToChar, которая преобразовывает введенную строку типа String к строке типа Char. / Функция преобразования строки типа String в тип char, так как класс разбора работает только с Сhar public: char* SystemStringToChar(System::String^ string) { //возвращает значение ввиде Сhar return (char*)(void*)System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi(string); } На втором этапе используем класс разбора Expression, который разбирает строку типа Char и осуществляет расчёт значения. class Expression { private: struct sintElem { char lexeme; double number; }; double * numArray; sintElem* walkthroughArray;/*Массив в котором хранятся результаты предразбора строки. // Функция построения графиков public: void Graw_Draw (void) { // Объявляем переменные, которые указывают диапазон значений X double min_x = System::Convert::ToDouble(textBox_x1->Text); double max_x = System::Convert::ToDouble(textBox_x2->Text); // Построение первого графика if(textBox11->Text != ) { // Преобразование строки типа String к типу Сhar char *stroka1 = SystemStringToChar(textBox11->Text); // Получаем линии от графиков LineItem ^F1Curve=(LineItem ^)zedGraphControl1->GraphPane->CurveList[0]; IPointListEdit ^list1= (IPointListEdit ^) F1Curve->Points; if(Expression::isExp(stroka1) == true) { // Вызов функции, которая разбирает строку типа Сhar, преобразуя ее в математическое выражение Expression exp(stroka1); for (double x =min_x; x Add(((double)(x)), exp.calculate(x)); } else MessageBox::Show(Не верный ввод даных,Ошибка, MessageBoxButtons::OK);} Для сохранения графиков используем метод компонента ZedGraph. В результате было создано тестирующее приложение (рисунок 2), которое позволяет вводить выражение функции и строить график, а также сохранять график в файле. // Открытие Form2 System::Windows::Forms::DialogResult dr; Form2 ^newDlg = gcnew Form2(); m1: dr = newDlg->ShowDialog(); // Условия выбора пользователем, в какой textBox будет введено выражение if (newDlg->radioButton1->Checked) { if (newDlg->textBox1->Text != ) textBox11->Text = newDlg->textBox1->Text; } if (newDlg->radioButton2->Checked) { if (newDlg->textBox1->Text != ) textBox22->Text = newDlg->textBox1->Text; } if (newDlg->radioButton3->Checked) { if (newDlg->textBox1->Text != ) textBox33->Text = newDlg->textBox1->Text; } 5.2 Руководство администратора прилож
Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность своей работы