Professional Documents
Culture Documents
Лабораторная работа 1
Лабораторная работа 1
Файл Form1.h
#pragma once
namespace lab1 {
/// <summary>
/// Summary for Form1
/// </summary>
public ref class Form1 : public System::Windows::Forms::Form
{
public:
Form1(void)
{
InitializeComponent();
//
//TODO: Add the constructor code here
//
}
protected:
/// <summary>
/// Clean up any resources being used.
/// </summary>
~Form1()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::TextBox^ textBox1;
protected:
private: System::Windows::Forms::TextBox^ textBox2;
private: System::Windows::Forms::TextBox^ textBox3;
private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::Label^ label4;
private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::Button^ button3;
private:
/// <summary>
/// Required designer variable.
/// </summary>
System::ComponentModel::Container ^components;
}
#pragma endregion
private:
static array<char>^ s = gcnew array<char>(200);
static array<char>^ l = gcnew array<char>(200);
static array<int>^ A = gcnew array<int>(50);
static array<int>^ Q = gcnew array<int>(50);
static int dim=1;
static int f=0;
static int e1=0;
array<String^>^ as;
array<Char>^ ar;
ar=gcnew array<Char> (1);
ar[0]=' ';
if ((textBox2->Text->Length!=0)&&(textBox3->Text->Length!=0)&&(textBox1->Text-
>Length!=0))
{
dim=Convert::ToInt32(textBox1->Text);
label1->Text="Размерность векторного пространства равна "+textBox1->Text;
e1=0;
f=0;
// Получение первого вектора из строки
as=textBox2->Text->Split(ar);
for( int i=0;i<dim;i++)
{
A[i]=Convert::ToInt32(as[i]);
e1++;
}
// Получение второго вектора из строки
as=textBox3->Text->Split(ar);
for( int j=0;j<dim;j++)
{
Q[j]=Convert::ToInt32(as[j]);
f++;
}
if((e1==dim)&&(f==dim))
{
int L=0;
for(int i=0;i<dim;i++)
L=L+A[i]*Q[i];
if(L==0){label4->Text="Векторы являются ортогональными";}
else {label4->Text="Векторы не являются ортогональными";}
}
else label4->Text="Вы ввели не все координаты";
}
else
MessageBox::Show("Вы ввели не все данные !\n",
"Ошибка",
MessageBoxButtons::OK,
MessageBoxIcon::Error);
}
private: System::Void textBox1_KeyPress(System::Object^ sender,
System::Windows::Forms::KeyPressEventArgs^ e) {
if ((e->KeyChar>='0')&&(e->KeyChar<='9') )
//цифра
return;
//остальные символы запрещены
e->Handled=true;
}
private: System::Void textBox2_KeyPress(System::Object^ sender,
System::Windows::Forms::KeyPressEventArgs^ e) {
if( ((e->KeyChar>='0')&&(e->KeyChar<='9'))||(e->KeyChar==8)||
(e->KeyChar==' ')||
(e->KeyChar=='-')) return;
//Остальные символы запрещены
e->Handled=true;
}
array<String^>^ as;
array<Char>^ ar;
ar=gcnew array<Char> (1);
ar[0]=' ';
if ((textBox2->Text->Length!=0)&&(textBox3->Text->Length!=0)&&(textBox1->Text-
>Length!=0))
{
dim=Convert::ToInt32(textBox1->Text);
label1->Text="Размерность векторного пространства равна "+textBox1->Text;
e1=0;
f=0;
// Получение первого вектора из строки
as=textBox2->Text->Split(ar);
for( int i=0;i<dim;i++)
{
A[i]=Convert::ToInt32(as[i]);
e1++;
}
// Получение второго вектора из строки
as=textBox3->Text->Split(ar);
for( int j=0;j<dim;j++)
{
Q[j]=Convert::ToInt32(as[j]);
f++;
}
//////////////////////////////////////////
if((e1==dim)&&(f==dim))
{
char h;
double mod1=0.0,mod2=0.0,abs_scal=0.0;
int k=1;
for (int i=0;i<dim;i++){
mod1+=A[i]*A[i];
mod2+=Q[i]*Q[i];
abs_scal+=A[i]*Q[i];
}
mod1=Math::Sqrt(mod1);
mod2=Math::Sqrt(mod2);
abs_scal=Math::Abs(abs_scal);
if(mod1*mod2)
{
if(Math::Abs(abs_scal/(mod1*mod2)-1.0)<=0.001)
{
label4->Text="Векторы являются коллинеарными";
}
else {
label4->Text="Векторы не являются коллинеарными";
}
}
else {label4->Text="Векторы не являются коллинеарными";}
}
else label4->Text="Вы ввели не все координаты";
}
else
MessageBox::Show("Вы ввели не все данные !\n",
"Ошибка",
MessageBoxButtons::OK,
MessageBoxIcon::Error);
}
private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) {
Close();
}
};
}
Индивидуальные задания
При выполнении заданий необходимо использовать как главную форму, так и
новую форму, которая может быть создана самостоятельно. Для вывода сообщений
использовать диалоговые окна (функция MessageBox::Show (…)). Для ввода информации
использовать компоненты TextBoxt, NumericUpDown (ввод числовых данных) и другие.
Для указания на окончание ввода исходных данных использовать как кнопки, так и
нажатие на клавишу Enter. При вводе числовых данных в текстовые компоненты
предусмотреть контроль вводимых данных.
Вопросы
1. Каким образом, и какими средствами создаются приложения Windows Forms ?
2. Какие этапы реализуются при разработке приложений Windows Forms ?
3. Из каких файлов состоит приложение WinForm и как организованы эти файлы?
4. С выполнения каких функций и методов начинается выполнение приложения ?
5. Какие файлы входят в состав проекта и каково их назначение?
6. Каково назначение окон Solution Explorer и Редактора кода?
7. Приведите примеры компонентов и охарактеризуйте их назначение?
8. Охарактеризуйте главный модуль проекта?
9. Что содержит модуль формы (Form1.h)?
10. Как создать обработчик события (например, нажатия кнопки)?
11. Что такое компонент ?
12. В каком файле хранятся свойства компонентов ? На каком этапе разработки
приложения можно изменить эти свойства?
13. Перечислить основные отличия визуальных и невизуальных компонентов. Для чего
используются невизуальные компоненты?
14. На каком этапе происходит выделение памяти под объекты компонентных классов?
15. Что такое событие и как производится его обработка ?
16. Что такое опубликованное свойство компонента ?
17. Как включить новую форму в проект?
18. Какие компоненты используются для задания различных вариантов кнопок?
19. Приведите пример оператора изменения состояния флажка.
20. Перечислите и охарактеризуйте состояния, в которых может находиться флажок.
21. Напишите обработчик для анализа состояния флажка.
22. Какие события генерируются при создании и использовании формы?
23. Напишите какой-либо обработчик события создания формы.