Сравнить все числа относительно главной диагонали матрицы - C (СИ)
Формулировка задачи:
у меня дан квадратный двумерный массив, и мне надо сравнить все числа относительно главной диагонали, вот часть кода, здесь я именно сравниваю числа, но мой код сравнивает только часть чисел..не все, я не могу сообразить как сравнить именно все числа, подскажите пожалуйста
for(i=0;i<y;i++) // ищутся одинаковые значения
{
for(j=0;j<x;j++)
{
if(M[i][j+1]==M[i+1][j])Решение задачи: «Сравнить все числа относительно главной диагонали матрицы»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 8
int main()
{
int A[N][N], i, j, k, l;
srand(time(NULL));
for(i = 0; i < N; i++, putchar('\n'))
for(j = 0; j < N; j++)
printf("%3d", A[i][j] = rand() % 18 + 1);
putchar('\n');
for(i = 1, k = 1; i < N; i++, k++){
for(j = 0, l = 0; j < i; j++, l++){
if(A[i][j] == A[l][k]){
A[i][j] = -1;
A[l][k] = -3;
}
}
}
for(i = 0; i < N; i++, putchar('\n'))
for(j = 0; j < N; j++)
printf("%3d", A[i][j]);
}
Объяснение кода листинга программы
В этом коде:
- Создается матрица A размером NxN и заполняется случайными числами от 1 до 18.
- Инициализируются три переменные i, j, k, l для обхода матрицы.
- Перебираются элементы матрицы A, начиная с главной диагонали (i=1, j=0; i=2, j=1; и т.д.).
- Если элементы A[i][j] и A[l][k] равны, то они заменяются на -1 и -3 соответственно.
- Выводится матрица A. Этот код можно использовать для поиска и удаления дубликатов в матрице, но он не оптимизирован для больших матриц, так как использует два вложенных цикла.