Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Подпрограммы 2 и файлы

.docx
Скачиваний:
1
Добавлен:
12.01.2020
Размер:
129.38 Кб
Скачать

Глава VIII

Файлы

Ивин П.А.

ЭИС-14

Вариант 6

Задание: Код программы: private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)

{

ofstream fY;

fY.open("FileY.txt");

ifstream fin;

fin.open("FileX.txt");

if (!fin.is_open())

MessageBox::Show("Ошибка считывания файла");

double x, y;

while (!fin.eof())

{

fin >> x;

y = (pow(x, 2) + 1) / (pow(x, 3) + 2);

fY << "y=" << y << endl;

}

fin.close();

fY.close();

Process::Start("notepad.exe", "FileY");

} Результат работы программы: FileX – входной файл с переменными X FileY – выходной файл с переменными Y

Глава VII

Подпрограммы

Ивин П.А.

ЭИС-14

Вариант 6

Раздел 2

Задание: Заданы три матрицы А(второго порядка), В(третьего порядка) и С(четвертого порядка). Выяснить и напечатать, сколько из них являются симметричными (Матрица называется симметричной, если транспонированная матрица равна исходной). Транспонирование матрицы оформить в виде процедуры.

Код программы:

#pragma endregion

int TRe(int a, int b, int dT, double **massB)

{

dT = massB[a][b] * massB[a + 1][b + 1] * massB[a + 2][b + 2] + massB[a][b + 1] * massB[a + 1][b + 2] * massB[a + 2][b] + massB[a + 1][b] * massB[a][b + 2] * massB[a + 2][b + 1] - massB[a + 2][b] * massB[a + 1][b + 1] * massB[a][b + 2] - massB[a][b + 1] * massB[a + 2][b + 2] * massB[1][0] - massB[0][0] * massB[1][2] * massB[2][1]; // вычисление определителя третьего порядка методом треугольников

return dT;

}

void form(double **massA, double **massB, double **massC)

{

int dA;

int dB, dC, dT;

while (dA == 0)

{

for (int i = 0; i < 2; i++)

for (int j = 0; j < 2; j++)

massA[i][j] = rand() % 2;

dA = massA[0][0] * massA[1][1] - massA[0][1] * massA[1][0];

}

while (dB == 0)

{

for (int i = 0; i < 3; i++)

for (int j = 0; j < 3; j++)

massB[i][j] = rand() % 2; // (rand() % 500) /10.0 (для проверки используем целочисленные массивы)

dB = TRe(0, 0, dT, massB);

}

while (dC == 0)

{

for (int i = 0; i < 4; i++)

for (int j = 0; j < 4; j++)

massC[i][j] = rand() % 2;

dC = massC[0][0] * TRe(0, 0, dT, massC) - massC[0][1] * TRe(0, 1, dT, massC) + massC[0][2] * TRe(1, 0, dT, massC) - massC[0][3] * TRe(1, 1, dT, massC);

}

}

bool ch = false;

void tr(double **A, int n)

{

int t, a = 0;

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

for (int j = 0; j < n; j++)

{

t = A[i][j];

if (t == A[j][i]) a++;

A[i][j] = A[j][i];

A[j][i] = t;

}

if (a == n * n) ch = true; else ch = false;

}

void show(double **massA, double **massB, double **massC)

{

dataGridView1->TopLeftHeaderCell->Value = "Матрица A";

for (int i = 0; i < 2; i++)

for (int j = 0; j < 2; j++)

{

dataGridView1->Columns[j]->HeaderCell->Value = Convert::ToString(j + 1);

dataGridView1->Rows[i]->HeaderCell->Value = Convert::ToString(i + 1);

dataGridView1->Rows[i]->Cells[j]->Value = massA[i][j];

}

dataGridView2->TopLeftHeaderCell->Value = "Матрица B";

for (int i = 0; i < 3; i++)

for (int j = 0; j < 3; j++)

{

dataGridView2->Columns[j]->HeaderCell->Value = Convert::ToString(j + 1);

dataGridView2->Rows[i]->HeaderCell->Value = Convert::ToString(i + 1);

dataGridView2->Rows[i]->Cells[j]->Value = massB[i][j];

}

dataGridView3->TopLeftHeaderCell->Value = "Матрица C";

for (int i = 0; i < 4; i++)

for (int j = 0; j < 4; j++)

{

dataGridView3->Columns[j]->HeaderCell->Value = Convert::ToString(j + 1);

dataGridView3->Rows[i]->HeaderCell->Value = Convert::ToString(i + 1);

dataGridView3->Rows[i]->Cells[j]->Value = massC[i][j];

}

}

void ms3(double **A, int n)

{

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

A[i] = new double[n];

}

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

{

double **massA = new double *[2];

double **massB = new double *[3];

double **massC = new double *[4];

int k = 0;

ms3(massA, 2);

ms3(massB, 3);

ms3(massC, 4);

dataGridView1->ColumnCount = 2;

dataGridView1->RowCount = 2;

dataGridView2->ColumnCount = 3;

dataGridView2->RowCount = 3;

dataGridView3->ColumnCount = 4;

dataGridView3->RowCount = 4;

form(massA, massB, massC);

tr(massA, 2);

if (ch == true) k++;

tr(massB, 3);

if (ch == true) k++;

tr(massC, 4);

if (ch == true) k++;

show(massA, massB, massC);

textBox1->Text = Convert::ToString(k);

dataGridView1->AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode::AutoSizeToAllHeaders);

dataGridView1->AutoResizeColumns();

dataGridView2->AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode::AutoSizeToAllHeaders);

dataGridView2->AutoResizeColumns();

dataGridView3->AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode::AutoSizeToAllHeaders);

dataGridView3->AutoResizeColumns();

}

Соседние файлы в предмете Информатика