Заменить повторяющиеся в матрице элементы нулями - C (СИ)
Формулировка задачи:
Известно, что в матрице A(n×m) нет нулей. Заменить повторяющиеся в матрице элементы нулями. Помогите пожалуйста. Спасибо.
Решение задачи: «Заменить повторяющиеся в матрице элементы нулями»
textual
Листинг программы
#include <stdio.h> #define S 5 #define B 5 int main(void) { int i,j=0,v,s; int A[S][B]={{2,7,67,45,2},{5,5,5,5,654}, {34,45,22,11,22}, {3,4,5,6,654}, {4,78,65,1,1}}; int *pt; int *pp; pt=A[0]; v=B*S; for(i=1;i<=v;i++) { pp=pt+1; s=*pt; for(j=i+1;j<=v;j++) { if(s==*pp){*pp=0;*pt=0;} pp++; } pt++; } for(i=0;i<S;i++) { printf("\n"); for(j=0;j<B;j++) { printf("%-3d ",A[i][j]); } } return(0); }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и математическими операциями.
- Определение размеров матрицы S и B.
- Создание двумерного массива A размером S x B, заполненного случайными значениями.
- Указание на то, что первая строка матрицы будет использоваться как указатель на первый элемент.
- Создание указателей pt и pp для работы с элементами матрицы.
- Инициализация указателя pt на первый элемент первой строки матрицы A.
- Вычисление общего количества элементов в матрице и сохранение этого значения в переменной v.
- Внешний цикл for, который проходит по всем элементам матрицы от первого до последнего.
- Внутренний цикл for, который проверяет все элементы, начиная с текущего индекса, на равенство текущего элемента с предыдущим.
- Если элементы равны, то текущий элемент и предыдущий элемент заменяются на ноль.
- Указатель pp увеличивается на 1, чтобы перейти к следующему элементу.
- Указатель pt увеличивается на 1, чтобы перейти к следующему элементу.
- Внутренний цикл завершается, когда он достигает конца матрицы.
- Указатель pt возвращается к началу первой строки матрицы.
- Внутренний цикл for, который проходит по всем строкам матрицы.
- Внешний цикл for, который проходит по всем элементам строки.
- Внутренний цикл for, который выводит каждый элемент матрицы, отцентрировав его и добавив пробелы.
- Внутренний цикл завершается, когда он достигает конца строки.
- Внешний цикл for завершается, когда он достигает конца матрицы.
- Программа возвращает 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д