Глава VI
Строки
Ивин П.А.
ЭИС-14
Вариант 6
Раздел 1
Задание:
написать программу, которая каждое встреченное сочетание 'аб' заменяет символом 'с'.
Код программы:
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
String^ str = textBox1->Text;
if (textBox1->Text->Length == 0)
MessageBox::Show("Не введены данные !");
textBox2->Text = str->Replace("аб", "с");
}
Результат работы программы:
Глава VI
Строки
Ивин П.А.
ЭИС-14
Вариант 6
Раздел 2
Задание: текст начинается с некоторой ненулевой цифры, за которой следуют только буквы, и их количество равно числовому значению цифры.
Код программы:
#pragma endregion private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
{
String^ str = textBox1->Text;
Char s1 = str[0];
String^ s2;
s2 = str->Substring(1);
int len = s2->Length;
if ((s1 <= '9') && (s1 > '0') && (len == s1 - 48)) rB1->Checked = true;
else rB2->Checked = true;
}
Результат работы программы:
Глава 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);
}
}
void tr(double **massA, double **massB, double **massC, double **trA, double **trB, double **trC)
{
int k = 0, A = 0, B = 0, C = 0;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
trA[j][i] = massA[i][j];
for (int i = 0; i < 2; i++)
for (int j = 0; j < 2; j++)
if (trA[i][j] == massA[i][j]) A ++;
if (A == 4) k++;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
trB[j][i] = massB[i][j];
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
if (trB[i][j] == massB[i][j]) B ++;
if (B == 9) k++;
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
trC[j][i] = massC[i][j];
for (int i = 0; i < 4; i++)
for (int j = 0; j < 4; j++)
if (trC[i][j] == massC[i][j]) C ++;
if (C == 16) k++;
textBox1->Text = Convert::ToString(k);
}
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];
}
}
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];
double **trA = new double *[2];
double **trB = new double *[3];
double **trC = new double *[4];
for (int i = 0; i < 2; i++)
{
massA[i] = new double[2];
trA[i] = new double[2];
}
for (int i = 0; i < 3; i++)
{
massB[i] = new double[3];
trB[i] = new double[3];
}
for (int i = 0; i < 4; i++)
{
massC[i] = new double[4];
trC[i] = new double[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,massB,massC, trA,trB,trC);
show(massA, massB, massC);
dataGridView1->AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode::AutoSizeToAllHeaders);
dataGridView1->AutoResizeColumns();
dataGridView2->AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode::AutoSizeToAllHeaders);
dataGridView2->AutoResizeColumns();
dataGridView3->AutoResizeRowHeadersWidth(DataGridViewRowHeadersWidthSizeMode::AutoSizeToAllHeaders);
dataGridView3->AutoResizeColumns();
}