Как сделать, чтобы в ответе программа выводила измененный массив? - C (СИ)
Формулировка задачи:
Дан массив из целых чисел А(5 х 5). Заменить максимальный элемент
каждой строки на противоположный.
в ответе он должен вывести измененный массив если поможете исправить ошибку буду благодарен.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main()
{
srand(time(NULL));
int a[100][100], i, j, n, max, k;
scanf_s("%d", &n);
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
{
a[i][j] = -1 + rand() % 10;
printf("%3i", a[i][j]);
}
printf("\n");
}
for (i = 1;i <= n;i++)
{
max = a[i][1];
{for (j = 1;j <= n;j++)
if (a[i][j] >= max) max = a[i][j];
k = -max;}
printf("max=%3d\n", k);
}
for (i = 1;i <= n;i++)
{
for (j = 1;j <= n;j++)
{
printf("%3i", a[i][j]);
}
printf("\n");
}
}Решение задачи: «Как сделать, чтобы в ответе программа выводила измененный массив?»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void) /* int main(void) !!! - следуем стандартам */
{
int a[100][100], i, j, n, max, k=0;
int * tmp = NULL; /* указатель на максимальный элемент */
srand(time(NULL));
scanf_s("%d", &n);
for (i = 1; i <= n; i++)
{
for (j = 1; j <= n; j++)
{
a[i][j] = -1 + rand() % 10;
printf("%3i", a[i][j]);
}
printf("\n");
}
for (i = 1;i <= n;i++)
{
max = a[i][1];
for (j = 1;j <= n;j++)
{
if (a[i][j] >= max)
{
max = a[i][j];
tmp = &a[i][j]; /* запомнили, какой элемент является самым большим, установив на него указатель */
k = - max;
}
}
*tmp = k; /* записали k по адресу максимального элемента */
printf("max=%3d | change=%3d\n", max,k);
}
for (i = 1;i <= n;i++)
{
for (j = 1;j <= n;j++)
{
printf("%3i", a[i][j]);
}
printf("\n");
}
return 0;
}