Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Методические указания. 1. Исходные данные должны включать и положительные числа и отрицательные и нули.
1. Исходные данные должны включать и положительные числа и отрицательные и нули. 2. Напомним некоторые свойства матриц: - если номер строки элемента совпадает с номером столбца (i=j), это означает, что элемент лежит на главной диагонали матрицы; - элемент находится ниже главной диагонали, если номер строки превышает номер столбца (i> j); - если номер столбца больше номера строки (i< j), то элемент нохлдится выше главной диагонали; - элемент лежит на побочной диагонали, если его индексы удовлетворяют равенству i + j -1 = n; - неравенство i + j -1 < n характерно для элемента, находящегося выше побочной диагонали; - соответственно, элементу, лежащему ниже побочной диагонали, соответствует выражение i + j -1 > n. 3. Пример программы. Дана целочисленная матрица размера n на m. Найти минимальный и максимальный элементы матрицы, сумму элементов и сумму цифр элементов главной диагонали матрицы (рисунок 28). 4. Для подключения генератора случайных чисел необходимо подключить файл < stdlib.h> Произвести инициализацию массива при щелчке на кнопке заполнить. 4. Для вывода двумерного массива удобно использовать табличную форму StrigGrid страницы Additional. Для того чтобы установить свойство Options-> goEditing в значение True (признак допустимости редактирования содержимого ячеек таблицы), необходмсо нажать на маленький плюс, расположенный справа от свойства Options. 5.
Рисунок 28. Компоненты формы приложения
Текст программы: #include < vcl.h> #pragma hdrstop
#include " Unit1.h" #include < stdlib.h> #include < math.h> //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource " *.dfm" TForm1 *Form1; int i, j, n, m; //--------------------------------------------------------------------------- __fastcall TForm1:: TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------------------------
void __fastcall TForm1:: FormCreate(TObject *Sender) { randomize();
} //--------------------------------------------------------------------------- void __fastcall TForm1:: Edit1Change(TObject *Sender) { // чтение количества строк матрицы n=StrToInt(Edit1-> Text)+1; StringGrid1-> RowCount= n; } //---------------------------------------------------------------------------
void __fastcall TForm1:: Edit2Change(TObject *Sender) { // чтение количества столбцов матрицы m=StrToInt(Edit2-> Text)+1; StringGrid1-> ColCount= m; } //---------------------------------------------------------------------------
void __fastcall TForm1:: Button1Click(TObject *Sender) { //нумерация строк матрицы for (j=0; j< n; j++) StringGrid1-> Cells[0][j]=IntToStr(j); //нумерация столбцов матрицы for (i=1; i< m; i++) StringGrid1-> Cells[i][0]=IntToStr(i); //заполнение матрицы двухзначными случайными числами for (j=1; j< n; j++) for (i=1; i< m; i++) StringGrid1-> Cells[i][j]=IntToStr(rand () % 99 - 25); } //--------------------------------------------------------------------------- void __fastcall TForm1:: Button2Click(TObject *Sender) { int min, max, sum, s, k; // нахождение минимального элемента матрицы if (CheckBox1-> Checked) { min=StrToInt(StringGrid1-> Cells[1][1]); for (j=1; j< n; j++) for (i=1; i< m; i++) if (StrToInt(StringGrid1-> Cells[i][j])< min) min=StrToInt(StringGrid1-> Cells[i][j]); Edit3-> Text=IntToStr(min); //вывод результата на форму приложения } else Edit3-> Text= " "; //очистка компоненты // нахождение максимального элемента матрицы if (CheckBox2-> Checked) { max=StrToInt(StringGrid1-> Cells[1][1]); for (j=1; j< n; j++) for (i=1; i< m; i++) if (StrToInt(StringGrid1-> Cells[i][j])> max) max=StrToInt(StringGrid1-> Cells[i][j]); Edit4-> Text=IntToStr(max); //вывод результата на форму приложения } else Edit4-> Text= " "; //очистка компоненты // подсчет суммы элементов главной диагонали матрицы. if (CheckBox3-> Checked) { sum=0; if (n> m) k=m; else k=n; for (j=1; j< k; j++) sum=sum+StrToInt(StringGrid1-> Cells[j][j]); Edit5-> Text=IntToStr(sum); //вывод результата на форму приложения } else Edit5-> Text= " "; //очистка компоненты // определение суммы цифр элементов главной диагонали матрицы. if (RadioButton1-> Checked) { sum=0; if (n> m) k=m; else k=n; for (j=1; j< k; j++) {s=abs(StrToInt(StringGrid1-> Cells[j][j])); while (s! =0) { sum=sum+ s-s/10*10; s=s/10; } } Edit6-> Text=IntToStr(sum); //вывод результата на форму приложения } else Edit6-> Text= " "; } //очистка компоненты
//---------------------------------------------------------------------------
|