Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Лабораторная работа №2 Вариант 1
- // Подключение библиотек
- #include <iostream>
- #include <fstream>
- #include <stdio.h>
- #include <iomanip>
- #include <new>
- #include <climits>
- #include <cstdlib>
- #include <Windows.h>
- using namespace std;
- void first_sposob()
- {
- const int n = 4;
- const int m = 5;
- int counter = 0, max, min, min_counter = 0, result, row = 0;
- int arr[n][m] = {3, 7, 8, 0, 1, 4, 2, 9, 1, 4, 7, 6, 5, 2, 7, 6, 1, 9, 3, 0};
- //Находим строки с нулевыми элементами
- for (int i = 0; i < n; ++i)
- {
- for (int j = 0; j < m; ++j)
- {
- cout << setw(4) << arr[i][j];
- if (arr[i][j] == 0)
- counter++;
- }
- cout << "\n\n";
- if (counter > 0)
- row++;
- counter = 0;
- }
- min = arr[0][0];
- //Находим минимальный элемент
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- if (arr[i][j] < min)
- {
- min = arr[i][j];
- }
- }
- }
- //min_counter понадобится в дальнейшем
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- if (min == arr[i][j])
- min_counter++;
- }
- }
- result = min;
- //Находим максимальный повторяющийся элемент
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- max = arr[i][j];
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- if (max == arr[i][j])
- counter++;
- }
- }
- if (counter > 1 && result < max)
- result = max;
- counter = 0;
- }
- }
- cout << "\nКоличество строк, не содиржащих ни одного нулевого элемента: " << n - row;
- cout << "\nМаксимальное из чисел, встречающихся в заданной митрице более одного раза: ";
- //Если значение result не изменилось и min_counter равен 1,
- //то есть значение min не повторяется, значит максимального
- //повторяющегося элемента нет. Иначе выводим result.
- (result == min && min_counter == 1) ? cout << "Нет таких элементов!\n"
- : cout << result << endl;
- }
- void second_sposob()
- {
- int counter = 0, max, min, min_counter = 0, result, row = 0;
- int n, m;
- ifstream f("in.txt");
- f >> n >> m;
- //Выделяем память для массива
- int **arr = new int *[n];
- for (int i = 0; i < n; ++i)
- arr[i] = new int[m];
- //Заполняем массив с файла и находим строки с нулевыми элементами
- for (int i = 0; i < n; ++i)
- {
- for (int j = 0; j < m; ++j)
- {
- f >> arr[i][j];
- cout << setw(4) << arr[i][j];
- if (arr[i][j] == 0)
- counter++;
- }
- cout << "\n\n";
- if (counter > 0)
- row++;
- counter = 0;
- }
- min = arr[0][0];
- //Находим минимальный элемент
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- if (arr[i][j] < min)
- {
- min = arr[i][j];
- }
- }
- }
- //min_counter понадобится в дальнейшем
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- if (min == arr[i][j])
- min_counter++;
- }
- }
- result = min;
- //Находим максимальный повторяющийся элемент
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- max = arr[i][j];
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- if (max == arr[i][j])
- counter++;
- }
- }
- if (counter > 1 && result < max)
- result = max;
- counter = 0;
- }
- }
- cout << "\nКоличество строк, не содиржащих ни одного нулевого элемента: " << n - row;
- cout << "\nМаксимальное из чисел, встречающихся в заданной митрице более одного раза: ";
- //Если значение result не изменилось и min_counter равен 1,
- //то есть значение min не повторяется, значит максимального
- //повторяющегося элемента нет. Иначе выводим result.
- (result == min && min_counter == 1) ? cout << "Нет таких элементов!\n"
- : cout << result << endl;
- for (int i = 0; i < n; i++)
- {
- delete[] arr[i];
- }
- delete[] arr;
- }
- int main()
- {
- setlocale(LC_ALL, "rus");
- int sposob;
- label:
- cout << "[1] --> размещение массива в статической памяти" << endl;
- cout << "[2] --> размещение массива в динамической памяти(ввод данных с файла)" << endl;
- cout << "Введите способ решения задания: "; cin >> sposob; cout << "\n";
- if ((sposob != 1) && (sposob != 2))
- {
- cout << "Неправильная команда!" << endl;
- goto label;
- }
- switch (sposob)
- {
- case 1:
- first_sposob();
- break;
- case 2:
- second_sposob();
- break;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement