Разработать программу в C++ Builder, реализующую следующую задачу обработки двухмерных массивов.
Заменить нулевые элементы исходной матрицы А максимальными элементами столбцов, в которых элементы расположены. Найти сумму элементов матрицы, у которых номер строки равен номеру столбца. |
Домашняя контрольная работа. Иванов И.И. 1КС-15/з Вариант № 1
Домашняя контрольная работа. Иванов И.И. 1КС-15/з Вариант № 1
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit4.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int i,j,m,n,k;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
//процедура обработки момента изменения первого поля ввода для задания
//количества строк в StringGrid1
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
n=StrToInt(Edit1->Text); //перевод из строкового типа в целый количества строк
StringGrid1->RowCount=n+1; //количество введенных строк
StringGrid2->RowCount=n+1;
for (i=1; i<=n; i++) // цикл для фиксированного заголовка строки
{
StringGrid1->Cells[0][i]=IntToStr(i)+"-ая строка";
StringGrid2->Cells[0][i]=IntToStr(i)+"-ая строка";
}
}
//---------------------------------------------------------------------------
//процедура обработки момента изменения второго поля ввода для задания
//количества столбцов в StringGrid1
void __fastcall TForm1::Edit2Change(TObject *Sender)
{
m=StrToInt(Edit2->Text); // перевод из строкового типа в целый количества столбцов
StringGrid1->ColCount=m+1; //количество введенных столбцов
StringGrid2->ColCount=m+1;
for (int j=1; j<=m; j++) // цикл для фиксированного заголовка столбца
{
StringGrid1->Cells[j][0]=IntToStr(j)+"-й столбец";
StringGrid2->Cells[j][0]=IntToStr(j)+"-й столбец";
}
}
Домашняя контрольная работа. Иванов И.И. 1КС-15/з Вариант № 1
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float A[100][100]; // описание массива А
float max,sum=0; //переменные для хранения максимального значения и суммы
// ввод матрицы из StringGrid
for (i=0; i<n; i++) // начало цикла по индексам строк
for (j=0; j<m; j++) // начало цикла по индексам столбцов
A[i][j]=StrToFloat(StringGrid1->Cells[j+1][i+1]); // ввод значения массива из ячейки StringGrid
for (j=0; j<m; j++) // начало цикла по индексам столбцов
{
max=A[0][j]; // назначить максимальным элементом первый в столбце
for (i=0; i<n; i++) // начало цикла по индексам строк
//если следующий элемент больше максимального, то выполнить замену
if (A[i][j]>max) max=A[i][j];
for (k=0; k<n; k++) // начало цикла по индексам строк
if (A[k][j]==0) A[k][j]=max; //замены нулевых элементов максимальным
}
// вывод матрицы в StringGrid
for (i=0; i<n; i++) // начало цикла по индексам строк
for (j=0; j<m; j++) // начало цикла по индексам столбцов
StringGrid2->Cells[j+1][i+1]=FloatToStrF(A[i][j],ffFixed,8,5); // вывод значения массива в ячейку
for (i=0; i<n; i++) // начало цикла по индексам строк
for (j=0; j<m; j++) // начало цикла по индексам столбцов
//накапливать сумму элементов, для которых индексы равны
if (i==j) sum+=A[i][j];
Label6->Caption = FloatToStrF(sum,ffFixed,8,5);
}
//---------------------------------------------------------------------------
Домашняя контрольная работа. Иванов И.И. 1КС-15/з Вариант № 1
Результаты работы программы:
Домашняя контрольная работа. Иванов И.И. 1КС-15/з Вариант № 1
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Архангельский А.Я. Программирование в C++ Builder. –М.: Бином, 2010 – 1298 с.
2. Культин Н.Б. C++ Builder. 2-е издание. –СПб.: БХВ-Петербург, 2008 – 464 с.
3. Бобровский С.И. Технологии C++ Builder. Разработка приложений для бизнеса. Учебный курс. –СПб.: Питер, 2010 – 560 с.
4. Семакин И.Г., Шестаков А.П. Основы алгоритмизации и программирования. –М.: Издательский центр «Академия», 2012 – 400 с.
5. Бьерн Страуструп. Язык программирования С++. – СПб.-М.: Бином, 1999 – 991 с.
6. C ++ Builder -https://www.helloworld.ru/show.php?curraz=23&prev=1
Домашняя контрольная работа. Иванов И.И. 1КС-15/з Вариант № 1