Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdio.h"
- #include "locale.h"
- #include "stdlib.h"
- #include "time.h"
- // ввод чисел вручную
- void input_arr(int** a, int n, int m) {
- printf("Введите числа не больше 100: ");
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < m; j++)
- do {
- scanf_s("%i", &a[i][j]);
- } while ((a[i][j] < 0) || (a[i][j] > 100));
- }
- }
- // ввод чисел рандомно
- void inputrand_arr(int** a, int n, int m) {
- srand(clock());
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < m; j++)
- a[i][j] = rand() % 10;
- }
- }
- // вывод массива
- void output(int** a, int n, int m) {
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < m; j++)
- printf("%i ", a[i][j]);
- printf("\n");
- }
- }
- // смотрит является ли это число максимум вокруг себя, если нет то функция возращает нуль и зануляет элемент
- int maximum(int** a, int n, int m, int i, int j) {
- // проверяет элементы вокруг себя поле 3x3
- for (int x = i - 1; x < i + 2; x++) {
- for (int y = j - 1; y < j + 2; y++) {
- if (x >= 0 && y >= 0 && x < n && y < m && a[x][y] >= a[i][j] && (i != x || j != y)) { // смотрим выходим ли мы пределы массива
- return 0;
- }
- }
- }
- return 1;
- }
- int main() {
- setlocale(LC_ALL, "rus");
- int n; int m; // размер массива
- printf("Введите размер матрицы nxm: ");
- do {
- scanf_s("%d%d", &n, &m);
- if ((n <= 0) || (m <= 0))
- printf("Повторите ввод, введите положительное число: ");
- } while ((n <= 0) || (m <= 0));
- // создаем массив
- int** a = (int**)malloc(n * sizeof(int**));
- for (int i = 0; i < n; i++) {
- a[i] = (int*)malloc(n * sizeof(int*));
- }
- printf("Выберите способ ввода массива:\n1-ввод с клавиатуры\n2-заполнение массива случайными числами\n");
- int f;
- do {
- scanf_s("%i", &f);
- if ((f != 1) && (f != 2))
- printf("Введите только 1 или 2: ");
- } while ((f != 1) && (f != 2));
- if (f == 1)
- input_arr(a, n, m);
- else
- inputrand_arr(a, n, m);
- printf("\nИсходная матрица\n");
- output(a, n, m);
- // проверям каждый элемент
- for (int i = 0; i < n; i++) {
- for (int j = 0; j < m; j++) {
- if (maximum(a, n, m, i, j) == 0) { // если возращает 0, то не меняем, если 1 то зануляем
- a[i][j] = 0;
- }
- }
- }
- printf("\n\nГотовая матрица\n");
- output(a, n, m);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement