Поменять местами наибольший и наименьший элемент главной диагонали массива - C (СИ)
Формулировка задачи:
Дан массив 10х10. Поменять местами наибольший и наименьший элемент главной диагонали массива.
Написал код. Но не работает. Можете указать на ошибки.
int main
{
int a[10][10];
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
a[i][j]=rand()%100;
printf("%d",a[i][j]);
}}
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
int max=[0][0],min=[0][0];
if(max=a[i][j])
max=a[i][j];
if(min>a[i][j])
min=a[i][j];
}}
{
int t=max;
max=min;
min=t;
printf("%d",a[i][j]);
}
return 0;
}Решение задачи: «Поменять местами наибольший и наименьший элемент главной диагонали массива»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main() {
int a[10][10];
int i, j;
for (i = 0; i < 10; ++i) {
for (j = 0; j < 10; ++j) {
a[i][j] = rand() % 100;
printf("%4d", a[i][j]);
}
printf("\n");
}
int* max = &a[0][0];
int* min = &a[0][0];
for (i = 1; i < 10; ++i) {
if (*max < a[i][i]) {
max = &a[i][i];
}
if (a[i][i] < *min) {
min = &a[i][i];
}
}
int t = *max;
*max = *min;
*min = t;
printf("\n");
for (i = 0; i < 10; ++i) {
for (j = 0; j < 10; ++j) {
printf("%4d", a[i][j]);
}
printf("\n");
}
return 0;
}
Объяснение кода листинга программы
- Объявлен массив a[10][10] для хранения 10x10 элементов.
- Заполняют массив случайными числами от 0 до 99 с помощью функции rand().
- Выводят заполненный массив на экран.
- Инициализируют указатели max и min на первый элемент главной диагонали a[0][0].
- Проходят по всем элементам главной диагонали, начиная со второго элемента, ищут наибольший и наименьший элементы.
- Меняют местами наибольший и наименьший элементы.
- Выводят измененный массив на экран.
- Возвращают 0, чтобы завершить работу программы.