По теме «Многомерные массивы»




 
 


Разработать программу в 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



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-01-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: