Topshiriqning bajarilish tartibi “Ko‘p o‘lchovli massiv. Matritsa tushunchasi. Matritsa satrlari, ustunlari va diagonallari elementlarini qayta ishlash
9 -10-topshiriqning bajarilish tartibi “Ko‘p o‘lchovli massiv. Matritsa tushunchasi. Matritsa satrlari, ustunlari va diagonallari elementlarini qayta ishlash "
Matrisa elementlari kiritiladigan jadvalni yaratish uchun foydalanuvchini satrlar va ustunlar sonini kiritishga imkon beradigan Windows ilovani yarating, so‘ngra foydalanuvchi xohishiga ko‘ra quyidagini aniqlaylang:
matritsaning manfiy elementlari yig‘indisi va matritsaning juft elementlari soni.
Topshiriqning bajarilish tartibi. Visual Studio 2019 muhitini ochamiz.
Loyiha yaratish (Создание проекта) oynasida Ilova yaratish oynasining izlash satriga CLR so‘zini kiritamiz. Izlash natijasida kelib chiqqan ilova turlaridan CLR bo‘sh ilovasini tanlaymiz. (Empty project CLR(Net.Framework). Keyingi tugma(Далее)sini bosish natijasida hosil bo‘lgan oynada tahrirlovchining loyiha nomi maydoniga (bu yerda ), loyihaning nomini kiriting, masalan, Project. Joylashuv maydonida siz loyihani joylashtirish yo‘lini belgilashingiz yoki Browse tugmachasi (tugma) yordamida loyihani joylashtirish yo‘lini tanlashingiz mumkin. Odatiy bo‘lib, loyiha C:\Users\User\source\repos deb nomlangan maxsus papkada saqlanadi.
Forma uchun, matn xususiyatining qiymatini o‘zgartiring, masalan, quyidagi ma'lumotlarni kiriting: "Qo‘llanma_6_lab".
Formaning FormBorderStyle xususiyatini (oyna ramkasi uslubi) FixedToolWindow ga o‘rnating. Bu qiymat oynani dialog oynasi sifatida belgilaydi, uning o‘lchamlarini dasturni ishga tushirish bosqichida o‘zgartirish mumkin emas (dastur ishlayotganda).
GroupBox1 konteynerini oynaning yuqori qismiga joylashtiring va Text xususiyatiga "Matritsaning ma'lumotlarini kiritish" satrini kiriting.
Bir xil GroupBox1 konteyneriga etti komponentni joylashtiring: Label1, Label2, Label3, Label4, TextBox1, TextBox2 va DataGridWiew1.
Label1 komponentasi uchun Text xususiyatiga "Matrisaning o‘lchamlarini kiriting" satrini kiriting. Label2 komponentasi uchun Text xususiyatiga "satrlar soni n=" satrini kiriting. Label3 komponentasi uchun Text xossasiga "ustunlar soni m=" satrini kiriting. Label4 komponentasi uchun Text xususiyatiga " Matritsa [n][m] elementlari " satrini kiriting.
DataGridView1 komponentasini tanlang va RowHeadersVisible (qator sarlavhasini ko‘rsatish) va ColumnHeadersVisible (ustun sarlavhasini ko‘rsatish) uchun False ni tanlang.
GroupBox2 konteynerini GroupBox1 konteynerining ostiga qo‘ying va Text xususiyatiga "Find" satrini kiriting.
DataGridView2 komponentasini tanlang va unga checkBox1 va checkBox2 komponentlarini joylashtiring.
checkBox1 komponentasini tanlang va Text xususiyatiga "Matritsaning manfiy elementlari yig‘indisi" satrini kiriting. Xuddi shunday checkBox2 komponentasi uchun Text xususiyatiga "Matritsaning juft elementlari soni" satrini kiriting. Bu checkBox komponentlariga yonma-yon holatda TextBox3 va TextBox4 komponentalarini joylashtiring.
GroupBox2 komponentining ostiga uchta komponentni qo‘ying: Button1, Button2 va Button3.Button1 komponentasining Text xususiyatiga "Jadval yaratish" satrini kiriting. Button2 komponentasining Text xususiyatiga "Massiv elementlarini jadvalga ko‘chirish va topshiriqni bajarish" satrini kiriting. Button3 komponetasining Text xususiyatiga "Chiqish" satrini kiriting.Amalga oshirilgan operatsiyalar natijasida, 6.1-rasmda ko‘rsatilgandek formaga ega bo‘lamiz.
Dastur kodiga va quyidagi satrdan keyin o‘ting:
#pragma once
matematik funksiyalarni, o‘zgaruvchilar tavsifi va massiv o‘lchamini ishlatish uchun kutubxonlarni qo‘shing, buning uchun quyidagi qatorlarni kiriting:
#include int m, n, kol, kol2, p;
int A[50][50];
6.1 -rasm.Ilova oynasining ko‘rinishi
Button1 uchun "Click" hodisasini yarating.Buning uchun Button1 komponentasining ustiga sichqonchaning chap tugmasini ikki marta bosing. Protsedura kodiga quyidagicha o‘zgartirishlar kiriting:
// TextBox1 va textBox2 komponentlari bo‘sh emasligini tekshirish
if ((textBox1->Text != "") && (textBox2->Text != ""))
{
m = Convert::ToInt32(textBox1->Text);
n = Convert::ToInt32(textBox2->Text);
// DataGridView komponentasining ustunlari bo‘sh bo‘lmasa, ularni tozalash
dataGridView1->Columns->Clear();
// DataGridView komponentasini ustunlar bilan to‘ldirish
dataGridView1->ColumnCount = n;
// DataGridView komponentasini qatorlar bilan to‘ldirish
dataGridView1->RowCount = m;
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
{
A[i][j] = rand() % 90 + 10;
this->dataGridView1->Rows[i]->Cells[j]->Value = (Convert::ToString(A[i][j]));
}
}
else
{
MessageBox::Show("Ma'lumotlarni to‘ldiring", "Ma'lumot kiritish xatosi",
MessageBoxButtons::OK, MessageBoxIcon::Exclamation);
}
}
Sarlavha bilan Button2 uchun Click hodisasini yarating. "Massiv elementlari jadvalga chiqaramiz."Buning uchun Button2 komponentidagi sichqonchaning chap tugmachasini ikki marta bosing va hosil bo‘ladigan protseduraga kodni kiriting:
srand(time(NULL));
// kol va kol2 o‘zgarmaydiganlari nolga o‘rnatiladi va p o‘zgaruvchiga bittasi tayinlanadi
kol = 0; kol2 = 0; p = 1;
// Biz jadval hujayralaridan o‘qiymiz va ma'lumotlarni qatorga kiritamiz
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
{
A[i][j] = Convert::ToSingle(this->dataGridView1->Rows[i] -> Cells[j]->Value);
if (A[i][j] < 0) { p = p * A[i][j]; kol2++; }
if (A[i][j] % 2 == 0) { kol++; }
}
// Salbiy matritsa elementlari mahsulotini topishning ma'lumotlar chiqishi
if ((checkBox1->Checked == true) && (kol2 != 0)) {
this->textBox3 -> Text = Convert::ToString(p);
}
else
if (checkBox1->Checked == true) {
this->textBox3 -> Text = Convert::ToString("нет элементов");
}
// Matritsaning juft elementlari sonini topuvchi ma'lumotlarning chiqishi
if ((checkBox2->Checked == true) && (kol != 0)) {
this->textBox4 -> Text = Convert::ToString(kol);
}
else if (checkBox2->Checked == true) {
this->textBox4 -> Text = Convert::ToString("нет элементов");
}
return;
Sarlavha bilan Button3 uchun Click hodisasini yarating..Buning uchun Button3 komponentidagi sichqonchaning chap tugmachasini ikki marta bosing va natijada paydo bo‘lgan dasturning shabloniga dasturning chiqish kodini kiriting (oldingi laboratoriya ishlarida allaqachon ishlatilgan).
Oldingi laboratoriya ishi misollaridan foydalanib, xususiyatlar oynasidagi Leave hodisasi yordamida ma'lumotlarni kiritishning to‘g‘riligini (satr va ustunlar sonini) tekshiring (dastur kodiga kiritish to‘g‘riligini tekshiruvchi 2 protsedurani qo‘shing).
F5 funksional tugmasini bosib dasturni bajarilishini boshlang.Biz quyidagi oyna ko‘rinishini olamiz (6.2 -rasm).