Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //var_18
- // 1) Дан массив y0, y1, y2,…, yn-1. Определить сумму значений элементов
- // массива с чётными номерами, лежащих между элементом с минимальным
- // положительным значением и элементом с номером n/2.
- // 2) В заданной квадратной матрице размера 2n*2n поменять местами значения
- // элементов строк области 8 и элементов столбцов области 6 с одинаковыми номерами.
- #include <iostream>
- #include <stdlib.h>
- #include <locale.h>
- #include <locale>
- #include <algorithm>
- using namespace std;
- typedef int telem; // определение типа элементов массива
- typedef telem *tmas, **tmatr; // определение типа массивов
- void i_mas(tmas, int &); // функция заполнения массива
- void o_mas(tmas, int); // функция вывода массива
- int min_ind(tmas, int); // поиск индекса элемента массива с миинимальным положительным значением
- telem sum_mas(tmas, int, int); // поиск суммы элементов массива с четными индексами
- void i_matr(tmatr, int &); // функция заполнения матрицы
- void o_matr(tmatr, int); // функция вывода матрицы
- void izm_matr(tmatr, int); // функция изменения матрицы
- int main() {
- setlocale(LC_ALL, "Russian");
- tmas y; // массив
- tmatr a; // матрица
- int n, i_min; // размер массива, индекс элемента с min полож значением
- telem sum; // сумма
- // ********************* Одномерный массив ***********************
- // Ввод размера массива
- cout << "\n Введете размер массива: ";
- cin >> n;
- // Контроль ввода размера массива
- if (n <= 0) {
- cout << "\n Введено недопустимое значение размера массива" << endl;
- return 1;
- }
- y = new int[n];
- // Заполнение исходного массива
- i_mas(y, n);
- // Вывод исходного массива
- cout << "\n Исходный массив:" << endl;
- o_mas(y, n);
- // Нахождение элемента с минимальным положительным значением
- i_min = min_ind(y, n);
- cout << "\n\n Индекс минимального = " << i_min << endl;
- // Нахождение суммы элементов
- sum = sum_mas(y, n, i_min);
- cout << "\n\n Сумма = " << sum << endl;
- delete[] y;
- // *********************************************************************
- // *********************** Двумерный массив **************************
- cout << "\n Введите половину размера матрицы: ";
- cin >> n;
- a = new int *[2 * n];
- for (int i = 0; i < 2 * n; i++)
- a[i] = new int[2 * n];
- // Заполнение матрицы
- i_matr(a, n);
- // Вывод матрицы
- cout << "\n Введенная матрица:" << endl;
- o_matr(a, n);
- // Изменение матрицы
- cout << "\n Измененная матрица:" << endl;
- izm_matr(a, n);
- o_matr(a, n);
- // for (int i = 0; i < 2 * n; i++)
- delete a;
- return 0;
- }
- void i_mas(tmas y, int &n) {
- cout << "\n Введите в одной строке элементы массива, " << endl;
- cout << " состоящего из " << n << " чисел, и нажмите <Enter>" << endl;
- for (int i = 0; i < n; i++)
- cin >> y[i];
- }
- void o_mas(tmas y, int n) {
- for (int i = 0; i < n; i++) {
- cout.width(4); // ширина поля для вывода значения элемента массива
- cout << y[i] << " ";
- }
- }
- int min_ind(tmas y, int n) {
- int mini = 0, flag = 0; // факт наличия полож. элемента
- // Ищем первый полож. элемент
- for (int i = 0; i < n; i++)
- if (y[i] > 0) {
- mini = i;
- flag = 1;
- break;
- }
- if (flag == 1) {
- for (int i = mini + 1; i < n; i++)
- if (y[i] > 0 && y[i] < y[mini]) mini = i;
- } else {
- cout << "\n\n Положительных элементов в массиве нет";
- exit(3); // прекращение исполнения программы
- }
- return mini;
- }
- telem sum_mas(tmas y, int n, int i_min) {
- telem sum = 0;
- if (i_min < (n / 2)) {
- for (int i = i_min; i < n / 2; i++) {
- if (i % 2 == 0)
- sum += y[i];
- }
- } else {
- for (int i = i_min; i > n / 2; i--) {
- if (i % 2 == 0)
- sum += y[i];
- }
- }
- return sum;
- }
- void i_matr(tmatr a, int &n) {
- cout << " Введите построчно через пробел элементы" << endl;
- cout << " матрицы размера " << 2 * n << "x" << 2 * n << endl;
- cout << " После ввода строки нажимайте <Enter>" << endl;
- for (int i = 0; i < 2 * n; i++)
- for (int j = 0; j < 2 * n; j++)
- cin >> a[i][j];
- }
- void o_matr(tmatr a, int n) {
- for (int i = 0; i < 2 * n; i++) {
- for (int j = 0; j < 2 * n; j++) {
- cout.width(3);
- cout << a[i][j];
- }
- cout << endl;
- }
- }
- void izm_matr(tmatr a, int n) {
- telem t; // временная переменная
- int j;
- // cout << "n " << n << endl;
- for (int i = 0; i < n; i++) {
- j = 0;
- while (j != i + 1) {
- // cout << i << " " << j << " " << j+n << endl;
- swap(a[i][j], a[j + n][i]);
- j++;
- }
- }
- }
- /*
- 0 1 3 2
- 1 2 3 3
- 1 2 3 3
- 1 2 3 4
- [0][0], (+3)
- [1][0], [1][1] (+2)
- [2][1], [3][1]
- [3][0]
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement