Я написал код для симметрии матрицы относительно побочной диагонали, на он ругается на
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;
}
Рабочий вариант вашего метода swap:
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
Однако, как заметили в комментариях выше у вас есть другие проблемы с приведенной программой.
Перед свапом на проверять что свапаете (мало-ли что программисты понаписали). Метод на Xor не просит tmp переменную
void XORswap(int* a, int* b)
{
if (a == b)
{
return;
}
*a ^= *b;
*b ^= *a;
*a ^= *b;
}
На крайняк (сарказм), не надо рожать костыль а дергать std
в
<algorithm>
есть
std::swap
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости