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); //освободим память
}
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен