Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая работа по информатике.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
397.12 Кб
Скачать

Листинг программы.

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

int l,i,j;

double eps,s,h, a[4][4],n,M,k,d,x_old[4],b[4];

// М максимально допустимое число итераций

x=gcnew array <double>(4);

String ^str;

str=this->textBox1->Text;

a[1][1]=Convert::ToDouble(str);

str=this->textBox2->Text;

a[1][2]=Convert::ToDouble(str);

str=this->textBox3->Text;

a[1][3]=Convert::ToDouble(str);

str=this->textBox5->Text;

a[2][1]=Convert::ToDouble(str);

str=this->textBox6->Text;

a[2][2]=Convert::ToDouble(str);

str=this->textBox7->Text;

a[2][3]=Convert::ToDouble(str);

str=this->textBox9->Text;

a[3][1]=Convert::ToDouble(str);

str=this->textBox10->Text;

a[3][2]=Convert::ToDouble(str);

str=this->textBox11->Text;

a[3][3]=Convert::ToDouble(str);

str=this->textBox4->Text;

b[1]=Convert::ToDouble(str);

str=this->textBox8->Text;

b[2]=Convert::ToDouble(str);

str=this->textBox12->Text;

b[3]=Convert::ToDouble(str);

str=this->textBox14->Text;

eps=Convert::ToDouble(str);

str=this->textBox13->Text;

n=Convert::ToDouble(str);

str=this->textBox18->Text;

M=Convert::ToDouble(str);

x[1]=x[2]=x[3]=0; k=1;

l=0;

for( ; ; )

{

h=0;

for(int i=1; i<=n; i++)

{

s=0;

for(int j=1; j<=i-1; j++)

{

s=s+a[i][j]*x[j];

}

for(int j=i+1;j<=n;j++)

{

s=s+a[i][j]*x[j];

}

x_old[i]=(b[i]-s)/a[i][i];

d=fabs(x_old[i]-x[i]);

if(d>h)

{

h=d;

}

else

{}

x[i]=x_old[i];

}

if(h<eps)

{

l=1;

}

else

{

if(k==M)

{

l=2;

}

if(k!=M)

{

k=k+1;

}

}

if(l!=0) break;

}//for ;;

if(l==1)

{

str=Convert::ToString(x[1]);

this->textBox15->Text=str;

str=Convert::ToString(x[2]);

this->textBox16->Text=str;

str=Convert::ToString(x[3]);

this->textBox17->Text=str;

str=Convert::ToString("");

this->textBox19->Text=str;

}

if(l!=1)

{

str=Convert::ToString(x[1]);

this->textBox15->Text=str;

str=Convert::ToString(x[2]);

this->textBox16->Text=str;

str=Convert::ToString(x[3]);

this->textBox17->Text=str;

str=Convert::ToString("Итерация расходится");

this->textBox19->Text=str;

}

} // Конец расчетов

private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e)

{

FILE *out;

Stream ^myStream;

String ^a;

if(x->Length==0)

{

MessageBox::Show("No count","Rect",MessageBoxButtons::OKCancel,MessageBoxIcon::Asterisk);

this->button2->Enabled=false;

return;

}

if(this->saveFileDialog1->ShowDialog()==System::Windows::Forms::DialogResult::OK)

{

if((myStream=this->saveFileDialog1->OpenFile())!=nullptr)

{

a=this->saveFileDialog1->FileName;

myStream->Close();

}

else

{

MessageBox::Show("Невозможно сохранить файл","Ошибка",MessageBoxButtons::OKCancel,MessageBoxIcon::Asterisk);

goto end;

}

}

else

{

goto end;

}

pin_ptr <const wchar_t> wch=PtrToStringChars(a);

_wfopen_s(&out,wch,L"w");

fprintf(out,"X[1]=%e\t X[2]=%e\t X[3]=%e\n ",x[1],x[2],x[3]);

fclose(out);

end:;

} // Конец сохранения