Консультация № 160333
12.02.2009, 21:13
0.00 руб.
0 1 1
Дан двумерный массив размерностью N умножить M(N и M вводятся с клавиатуры).Найти максимальный и минимальный элементы данного массива и поменять их местами.Произвести вывод даного массива ввиде матрицы.

Обсуждение

давно
Посетитель
7438
7205
14.02.2009, 03:18
общий
это ответ
Здравствуйте, Rusik202!
Программа в приложении.
Массив заполняем случайными числами 0-999


Приложение:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void main()
{
int i, j, n, m, max, min, imin, jmin, imax, jmax;
int *array;

printf("Enter rows count: ");
scanf("%d", &n);
printf("Enter columns count: ");
scanf("%d", &m);

array = (int*)malloc(m*n*sizeof(int)); //выделяем память под n*m элементов

srand(time(0)); //инициируем генератор псевдослучайных чисел

for(i=0;i<n;i++)
for(j=0;j<m;j++)
*(array+i*m+j)=rand()%1000 ; //заполняем массив случайными числами 0-999

printf ("\nSource matrix:\n"); //выведем исходный массив
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%5d ", *(array+i*m+j));
printf("\n");
}

for(i=0;i<n;i++) //ищем минимальный и максимальный элементы
{
for(j=0; j<m; j++)
{
if ((!i && !j) || (max<*(array+i*m+j))) //если элемент [0,0] или max<array[i,j]
{
max = *(array+i*m+j); //сохраняем максимальный
imax = i; //и его индексы
jmax = j;
}
if ((!i && !j) || (min>*(array+i*m+j))) //аналогично - минимальный
{
min = *(array+i*m+j);
imin = i;
jmin = j;
}
}
}

printf("\nMax element[%d,%d] = %d", imax+1, jmax+1, max); //выведем макс и мин
printf("\nMin element[%d,%d] = %d\n", imin+1, jmin+1, min); //индексы с 1 для наглядности

i = *(array+imax*m+jmax); //меняем местами максимального и минимального
*(array+imax*m+jmax) = *(array+imin*m+jmin);
*(array+imin*m+jmin) = i;

printf ("\nChanged matrix:\n"); //выведем получившийся массив
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%5d ", *(array+i*m+j));
printf("\n");
}

free (array); //освободим память
}
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа