Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
76
Добавлен:
27.04.2015
Размер:
290.5 Кб
Скачать

Int minmaxel (float*mas, int n, int&min)

{

float max=*mas; min=mas[0];

int imax; imax=imin=0;

for (int i=1; i<n; i++)

{

if (min>mas[i])

{

imin=i; min=*(mas+i);

}

if (max<mas[i])

{

max=mas[i]; imax=i;

}

}

return imax;

}

void main ()

{

float mas [] {1, -3, 7, 8, 15, 16, 17, 1, 5};

int imin;

int imax=minmaxel(mas, 9, imin);

cout <<”максимальный элемент “<< mas [ imax ]<<” минимальный

элемент “<<mas[imin];

}

//Динамическое распределение памяти массива

#include < iostream . h >

int minmaxel (float*mas, int n, int&min)

{

float max=*mas;

min=mas[0];

int imax;

imax=imin=0;

for (int i=1; i<n; i++)

{

if (min>mas[i])

{

imin=i;

min=*(mas+i);

}

if (max<mas[i])

{

max=mas[i];

imax=i;

}

}

return imax;

}

float * vvod (int n)

{

float* mas= new float [n];

cout<<” Введите ”<<n<<” чисел ”;

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

cin>>mas [i];

return mas;

}

void main ()

{

int n=4;

float*mas=vvod(n); // 16, -2, 4, 2

int imin;

int imax=minmaxel(mas, 9, imin);

cout <<”максимальный элемент “<< mas [ imax ]<<” минимальный

элемент “<<mas[imin];

delete [] mas; }

С++ автоматически передает массивы функциям, используя моделируемый вызов по ссылке— вызываемые функции могут изменять значения элементов в исходных массивах источника вызова.

Значение имени массива является адресом первого элемента массива. Поскольку в функцию передается начальный адрес массива, вызываемая функция знает, где хранится массив. Поэтому, когда вызываемая функция модифицирует элементы массива в теле функции, она модифицирует реальные элементы массива в их истинных ячейках памяти.

Передача массивов с помощью моделируемого вызова по ссылкеощутимо влияет на производительность. Если бы массивы передавались по значению, передавалась бы копия каждого элемента. Для больших, часто передаваемых массивов это привело бы к значительному потреблению времени и памяти для хранения копий массивов .

Для предотвращения модификации исходного массива внутри тела функции можно в определении функции применять к параметру массив спецификатор типа const. Это еще один пример принципа наименьших привилегий. Функциям не должно быть позволено модифицировать массивы без крайней необходимости .

Следует отметить, что независимо от конкретной задачи, ал­горитмы формирования и обработки массивов обычно строятся с исполь­зованием регулярных циклических структур, а при работе с многомерными массивами с использованием вложенных циклов (цикл в цикле).

2.5.2.7. Средства описания и работы с двумерными массивами данных

Как известно, массив- последовательность переменных одинакового типа, объединенных общимименем. Например: двумерный массивb(3, 2):

b(0,0) b(0,1) b(0,2)

b(1,0) b(1,1) b(1,2)

b(2,0) b(2,1) b(2,2)

b(3,0) b(3,1) b(3,2)

Количество индексов указывает на размерностьмассива. Так, в приведенном выше примере размерность массиваb(3,2)-2 (двумерный). А размер массиваb(3,2) равен12-ти.

В языке С++ определены только одномерные массивы, но поскольку элементом массива может быть массив, можно определить и многомерные массивы. Они формализуются списком константных_выражений следующих за идентификатором массива, причем каждое константное_выражение заключается в свои квадратные скобки.

Каждое константное_выражение в квадратных скобках определяет число элементов по данному измерению массива, так что объявление двухмерного массива содержит два константных_выражения, трехмерного три и т.д. Например:

Соседние файлы в папке 2 Уровень повыше. Теоретика