#include #include using namespace std; const int MAX_SIZE = 50; void cinMatrix(int matrix[MAX_SIZE][MAX_SIZE], int n) { for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) cin >> matrix[i][j]; } void coutMatrix(int matrix[MAX_SIZE][MAX_SIZE], int n) { for (int row = 0; row < n; row++) { for (int col = 0; col < n; col++) cout << matrix[row][col] << " "; cout << endl; } } // Задача първа: // Да се въведе квадратна матрица n x n, където 3 ≤ n ≤ 50 // и да се изведе сумата на всички четни елементи под главния диагонал (без него). int sumOfEvenUnderDiag(int matrix[MAX_SIZE][MAX_SIZE], int n) { int sum = 0; for (int row = 1, col = 0; row < n && col < n; row++, col++) { if (!(matrix[row][col] & 1)) sum += matrix[row][col]; } return sum; } void ex1() { int n; cin >> n; int matrix[MAX_SIZE][MAX_SIZE]; cinMatrix(matrix, n); cout << sumOfEvenUnderDiag(matrix, n) << endl; } // Задача втора: // Да се въведе квадратна матрица n x n, където 3 ≤ n ≤ 50 // и да се изведе сумата на всички нечетни елементи над главния диагонал (с него). int sumOfOddAboveDiag(int matrix[MAX_SIZE][MAX_SIZE], int n) { int sum = 0; for (int row = 0, col = 1; row < n && col < n; row++, col++) { if (matrix[row][col] & 1) sum += matrix[row][col]; } return sum; } void ex2() { int n; cin >> n; int matrix[MAX_SIZE][MAX_SIZE]; cinMatrix(matrix, n); cout << sumOfOddAboveDiag(matrix, n) << endl; } // Задача трета: // Да се въведе квадратна матрица n x n, където 3 ≤ n ≤ 50 // и да се изведе същата матрица, но елементите по вторичния диагонал да са на // квадрат. void squareSecDiag(int matrix[MAX_SIZE][MAX_SIZE], int n) { for (int row = 0, col = n - 1; row < n && col >= 0; row++, col--) matrix[row][col] *= matrix[row][col]; } void ex3() { int n; cin >> n; int matrix[MAX_SIZE][MAX_SIZE]; cinMatrix(matrix, n); squareSecDiag(matrix, n); coutMatrix(matrix, n); } // Задача четвърта: // Да се въведе квадратна матрица n x n, където 3 ≤ n ≤ 50 // и да се реализират функции, които я "завъртат" наляво и надясно. // // Бонус: Функция, която "завърта" матрицата по главния й диагонал. void flipLeft(int matrix[MAX_SIZE][MAX_SIZE], int n) { for (int row = 0; row < n; row++) { for (int col = 0; col <= n / 2; col++) { int tmp = matrix[row][col]; matrix[row][col] = matrix[row][n - 1 - col]; matrix[row][n - 1 - col] = tmp; } } } void flipDiagonal(int matrix[MAX_SIZE][MAX_SIZE], int n) { for (int row = 0; row < n; row++) { for (int col = 0; col < n - row - 1; col++) { int tmp = matrix[row][col]; matrix[row][col] = matrix[n - 1 - col][n - 1 - row]; matrix[n - 1 - col][n - 1 - row] = tmp; } } } void rotateClockwise(int matrix[MAX_SIZE][MAX_SIZE], int n) { } void ex4() { int n; cin >> n; int matrix[MAX_SIZE][MAX_SIZE]; cinMatrix(matrix, n); flipLeft(matrix, n); coutMatrix(matrix, n); flipDiagonal(matrix, n); coutMatrix(matrix, n); } // Задача пета: // Въведено е изречение. Изведете на стандартния изход неговите думи. На отделен // ред изведете думите подредени в лексикографски ред. const int LINE_SIZE = 1024; int separateIntoWords(char str[LINE_SIZE], char words[LINE_SIZE][LINE_SIZE]) { int strLen = strlen(str), row = 0, col = 0; for (int i = 0; i < strLen; i++) { if (str[i] == ' ') { row++; col = 0; } else { words[row][col++] = str[i]; } } return row + 1; } void assignFromTo(char str1[LINE_SIZE], char str2[LINE_SIZE], int str1len, int str2len) { for (int i = 0; i < str2len; i++) { if (i < str1len) str2[i] = str1[i]; else str2[i] = '\0'; } } void swapStrValues(char str1[LINE_SIZE], char str2[LINE_SIZE]) { char strtmp[LINE_SIZE]; int str1len = strlen(str1), str2len = strlen(str2); assignFromTo(str1, strtmp, str1len, str1len); assignFromTo(str2, str1, str2len, str1len); assignFromTo(strtmp, str2, str1len, str1len); } void bubbleSortWords(char words[LINE_SIZE][LINE_SIZE], int wordsCount) { for (int i = 0; i < wordsCount - 1; i++) for (int j = i + 1; j < wordsCount; j++) if (strcmp(words[i], words[j]) > 0) swapStrValues(words[i], words[j]); } void ex5() { char str[LINE_SIZE]; cin.getline(str, LINE_SIZE); char words[LINE_SIZE][LINE_SIZE]; int wordsCount = separateIntoWords(str, words); for (int row = 0; row < wordsCount; row++) { cout << words[row] << endl; } bubbleSortWords(words, wordsCount); for (int row = 0; row < wordsCount; row++) { cout << words[row] << endl; } } int main() { ex5(); }