Пример выполнения задания

Написать программу перестановки минимального и максимального элементов двумерного массива размером NxM. Память для массива выделить динамически. результат. Предусмотреть использование функции пользователя.

#include <iostream.h>

#include <iomanip.h>

#include <math.h>

// Прототип функции поиска минимального и максимального элементов

// двумерного массива

void Poisk (double**, int, int, int*, int*, int*, int*);

int main()

{

double **a, tmp;

int i, j, n, m, imin, jmin, imax, jmax;

cout << "Vvedite razmer massiva A:\n";

cout << "row n=";

cin >> n;

cout << "column m=";

cin >> m;

a = new double*[n]; // Выделение памяти под массив указателей

for(i=0; i<n; i++) // Выделение памяти под соответствующие

a[i] = new double[m]; // этим указателям строки матрицы

cout << "\nVvedite massiv A:\n"; // Ввод элементов двумерного массива

for (i=0; i<n; i++)

for (j=0; j<m; j++)

{

cout << "Vvedite a[" << i << "][" << j << "]: ";

cin >> a[i][j];

}

cout << "\nMassiv A:\n"; // Вывод элементов двумерного массива

for (i=0; i<n; i++)

{

for (j=0; j<m; j++)

cout << setw (9) << a[i][j];

cout << endl;

}

Poisk (a, n, m, &imin, &imax, &jmin, &jmax); // Вызов функции

tmp = a[imin][jmin]; // Перестановка элементов

a[imin][jmin] = a[imax][jmax];

a[imax][jmax] = tmp;

cout << "\nResult massiv:\n"; // Вывод результата

for (i=0; i<n; i++)

{

for (j=0; j<m; j++)

cout << setw (9) << a[i][j];

cout << endl;

}

for(i=0; i<n; i++) // Освобождение выделенной памяти

delete [] a[i];

delete []a;

a = NULL;

return 0;

}

// Функция поиска индексов минимального и максимального элементов массива

void Poisk (double **a,int n,int m,int *imin,int *imax,int *jmin,int *jmax)

{

int i, j;

*imin=*jmin=*imax=*jmax=0; // Инициализация значений индексов

for (i=0; i<n; i++)

for (j=0; j<m; j++)

{

if (a[i][j]<a[*imin][*jmin])

{ // Поиск индексов минимального элемента

*imin=i;

*jmin=j;

}

if (a[i][j]>a[*imax][*jmax])

{// Поиск индексов максимального элемента

*imax=i;

*jmax=j;

}

}

}

Рисунок 6 – Результат выполнения программы

Выделение памяти под двумерный динамический массив:

a = new double*[n]; // 1 Выделение памяти под массив указателей

for(i=0; i<n; i++) // 2 Выделение памяти под соответствующие

a[i] = new double[m]; // этим указателям строки матрицы


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: