#include using namespace std; // Задача първа: // Да се напише функция която изтрива елемент от масив по даден индекс. void delElem(int *src, int srcSize, int *dst, int ind) { for (int i = 0, j = 0; i < srcSize; i++, j++) { if (i == ind) i++; dst[j] = src[i]; } } void ex1() { int src[] = { 1, 2, 3, 4, 5 }, srcSize = sizeof(src)/sizeof(*src), *dst = new int[srcSize - 1]; delElem(src, srcSize, dst, 1); for (int i = 0; i < srcSize - 1; i++) { cout << dst[i] << " "; } cout << endl; delete[] dst; } // Задача втора: // От стандартния вход се четат две цели числа n и m. След това се чете матрица с n // колони и m реда. Да се напише функция, която връща реда, чийто сбор от // елементи е най - голям. void cinMatrix(int **matrix, int n, int m) { for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) cin >> matrix[i][j]; } } void findBigRowSum(int **matrix, int n, int m, int **bigRowSum) { int sum = -1024, tmpSum; for (int i = 0; i < n; i++) { tmpSum = 0; for (int j = 0; j < m; j++) tmpSum += matrix[i][j]; if (tmpSum > sum) { sum = tmpSum; *bigRowSum = matrix[i]; } } } void ex2() { /* Allocate matrix */ int n, m, **matrix; cin >> m >> n; matrix = new int*[n]; for (int i = 0; i < n; i++) matrix[i] = new int[m]; /* Input matrix */ cinMatrix(matrix, n, m); /* Find and print row */ int *bigRowSum; findBigRowSum(matrix, n, m, &bigRowSum); for (int i = 0; i < m; i++) cout << bigRowSum[i] << " "; cout << endl; /* Free memory */ for (int i = 0; i < n; i++) delete[] matrix[i]; delete[] matrix; } // Задача трета: // Да се напише функция, която приема като аргумент число "k" и матрица n x m и // да изтрива от нея k-тия ред. void delRow(int **src, int n, int m, int **dst, int ind) { for (int i = 0, j = 0; i < n; i++, j++) { if (i == ind) i++; dst[j] = src[i]; } } void ex3() { /* Allocate matrix */ int n, m, **src, **dst; cin >> m >> n; src = new int*[n]; for (int i = 0; i < n; i++) src[i] = new int[m]; dst = new int*[n - 1]; /* Input matrix */ cinMatrix(src, n, m); /* Find and remove row */ delRow(src, n, m, dst, 1); for (int i = 0; i < n - 1; i++) { for (int j = 0; j < m; j++) cout << dst[i][j] << " "; cout << endl; } /* Free memory */ for (int i = 0; i < n; i++) delete[] src[i]; delete[] src; delete[] dst; } // Задача четвърта: // От стандартния вход се чете цяло число n и масив с дължина n. Да се дефинира // следната функция: // void cycle(int* x, int n, int k), която преобразува едномерния масив x с n елемента, // като циклично ги премества на k позиции наляво. k е дадено естествено число, k > 0. void cycle(int *x, int n, int k) { int *helper = new int[n]; for (int i = 0; i < n; i++) helper[(abs(n - k) + i) % n] = x[i]; for (int i = 0; i < n; i++) x[i] = helper[i]; delete[] helper; } void ex4() { int n, k; cin >> n >> k; int *arr = new int[n]; for (int i = 0; i < n; i++) cin >> arr[i]; cycle(arr, n, k); for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << endl; delete[] arr; } // Задача пета: // Да се напише функция, която отстранява всички елементи от едномерен масив от // цели числа, които са по-малки едновременно от двата си съседа, без да се използва // помощен масив. За отстраняване на елемент от масива да се използва отместване // наляво. След края на програмата в масива не трябва да има такива елементи. int main() { ex4(); }