Самостоятельная работа по дисциплине: «Процессы открытых горных работ» Выполнил(а): Куролбоев О. Группы: Каримов Ш


Download 203.34 Kb.
bet3/4
Sana08.11.2023
Hajmi203.34 Kb.
#1758514
TuriСамостоятельная работа
1   2   3   4
Bog'liq
Миси титул

Перегрузка операций. Любая операция, определенная в C++, может быть перегружена для созданного класса. Это делается с помощью функций специального вида, называемых функциями-операциями (операторными функциями). Общий вид такой функции:
возвращаемый_тип operator # (список параметров)
{
тело функции
}
где вместо знака # ставится знак перегружаемой операции.


Операция инкремента (декремента) имеет две формы: префиксную и постфиксную. Для первой формы сначала изменяется состояние объекта в соответствии с данной операцией, а затем он (объект) используется в том или ином выражении. Для второй формы объект используется в том состоянии, которое у него было до начала операции, а потом уже его состояние изменяется.
Чтобы компилятор смог различить эти две формы операции инкремента (декремента), для них используются разные сигнатуры, например:
Point& operator ++( ); // префиксный инкремент
Point operator ++(int); // постфиксный инкремент
Индивидуальное задание № 1.
Вариант № 17
1.1. Постановка задачи:
17) Дана целочисленная квадратная матрица. Определить:
a) сумму элементов в тех столбцах, которые не содержат отрицательных элементов;
b) минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.


1.2. Листинг программы:
// Лабораторная работа № 10
// Индивидуальное задание № 1
#include
#include

using namespace std;


class Matrix {


private:
int size;
int **a;

public:
Matrix(int n) {


size = n;
a = new int*[size];
for (int i = 0; i < size; i++) {
a[i] = new int[size];
}
}

void read() {


for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
cin >> a[i][j];
}
}
}

void print() {


for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
}

int sum_no_negative_columns() {


int sum = 0;
bool has_negative;
for (int j = 0; j < size; j++) {
has_negative = false;
for (int i = 0; i < size; i++) {
if (a[i][j] < 0) {
has_negative = true;
break;
}
}
if (!has_negative) {
for (int i = 0; i < size; i++) {
sum += a[i][j];
}
}
}
return sum;
}

int min_sum_of_diagonal_parallel_to_secondary() {


int min_sum = INT_MAX;
int sum;
for (int k = 1 - size; k < size; k++) {
sum = 0;
for (int i = 0; i < size; i++) {
int j = i - k;
if (j >= 0 && j < size) {
sum += abs(a[i][j]);
}
}
if (sum < min_sum) {
min_sum = sum;
}
}
return min_sum;
}
};

int main() {


int n;
cout << "Enter the size of the square matrix: ";
cin >> n;

Matrix m(n);


cout << "Enter the elements of the matrix:" << endl;
m.read();

cout << "The matrix is:" << endl;


m.print();

int sum = m.sum_no_negative_columns();


cout << "The sum of the elements in the columns without negative elements is: " << sum << endl;

int min_sum = m.min_sum_of_diagonal_parallel_to_secondary();


cout << "The minimum sum of the absolute values of the elements of the diagonals parallel to the secondary diagonal of the matrix is: " << min_sum << endl;

return 0;


}



Download 203.34 Kb.

Do'stlaringiz bilan baham:
1   2   3   4




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling