Сравнить все числа относительно главной диагонали матрицы - 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]);
}

Объяснение кода листинга программы

В этом коде:

  1. Создается матрица A размером NxN и заполняется случайными числами от 1 до 18.
  2. Инициализируются три переменные i, j, k, l для обхода матрицы.
  3. Перебираются элементы матрицы A, начиная с главной диагонали (i=1, j=0; i=2, j=1; и т.д.).
  4. Если элементы A[i][j] и A[l][k] равны, то они заменяются на -1 и -3 соответственно.
  5. Выводится матрица A. Этот код можно использовать для поиска и удаления дубликатов в матрице, но он не оптимизирован для больших матриц, так как использует два вложенных цикла.

Оцени полезность:

9   голосов , оценка 4.111 из 5
Похожие ответы