Проблемы с функцией swap

87
26 ноября 2021, 20:10

Я написал код для симметрии матрицы относительно побочной диагонали, на он ругается на

void swap(int *a, int *b) 
{
    int temp = a;
    *a = b;
    *b = temp;
}

А именно на

*a = b;

Вот сам код:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
void swap(int *a, int *b) 
{
    int temp = a;
    *a = b;
    *b = temp;
}
int main()
{
    setlocale(LC_ALL, "RUS");
    int **p, n, i, j;
    printf_s("введите n\n");
    scanf_s("%d", &n);
    p = (int*)malloc(n*n * sizeof(int));
    srand(time(0));
    printf("\nОбычная:\n");
    for (i = 0; i < n; i++)
    {
        for(j=0;j<n;j++)
        {
            *(p+i*n+j) = rand() % 99;
            printf("%3d ", *(p + i * n + j));
        }
        printf("\n");
    }

    printf("\n\nИзмененная:\n");
    for (i = 0; i < n; i++)
    {
        for (j = 0; j < n; j++)
        {
            if ((i + j) < (n - 1))
            {
                swap(&p[i][j], &p[n - j - 1][n - i - 1]);
            }
            printf("%3d ", *(p + i * n + j));
        }
        printf("\n");
    }
    _getch();
    free(p);
    return 0;
}
Answer 1

Рабочий вариант вашего метода swap:

void swap(int *a, int *b) 
{
    int temp = *a;
    *a = *b;
    *b = temp;
}

Однако, как заметили в комментариях выше у вас есть другие проблемы с приведенной программой.

Answer 2

Перед свапом на проверять что свапаете (мало-ли что программисты понаписали). Метод на Xor не просит tmp переменную

void XORswap(int* a, int* b)
{
    if (a == b)
    {
        return;
    }
    *a ^= *b;
    *b ^= *a;
    *a ^= *b;
}

На крайняк (сарказм), не надо рожать костыль а дергать std

в

<algorithm>

есть

   std::swap
READ ALSO
Как работает строчка кода?

Как работает строчка кода?

Вообще не понимаю как работает "word[i] != word[len-i-1]"Пожалуйста, опишите как можно подробнее и "для чайников")

106
Не работает заполнение массива ГСЧ

Не работает заполнение массива ГСЧ

Есть очень интересная задачаНужно заполнить двумерный массив MxN случайными числами в диапазоне [-5; 10] с помощью ГСЧ, а потом посчитать среднее...

221
Как создать QGridLayout в ячейках QTableView?

Как создать QGridLayout в ячейках QTableView?

Как программно создать в ячейках таблицы QTableView сетку QGridLayout, в которой размещены лейблы QLable?

92
Как обойти баг в MS Visual Studio 2017?

Как обойти баг в MS Visual Studio 2017?

Когда много раз ищешь все ссылки на функцию, переменную, да на всё, что угодно, поиск идёт бесконечно, и при этом при попытке выйти из студии...

161