Самостоятельная работа по дисциплине: «Процессы открытых горных работ» Выполнил(а): Куролбоев О. Группы: Каримов Ш
Download 203.34 Kb.
|
Миси титул
- Bu sahifa navigatsiya:
- Операция инкремента (декремента)
- Индивидуальное задание № 1. Вариант № 17 1.1. Постановка задачи
- 1.2. Листинг программы
Перегрузка операций. Любая операция, определенная в 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:
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling