Ой массив имеет 2 размерности.




*/

 

Пример 7.5. Вывод на экран свойств массива и всех его элементов.

 

#include "stdafx.h"

using namespace System;

void PrintValues(Array^ myArr) {

// Вывод содержимого массива

Collections::IEnumerator^ myEnumerator =

myArr->GetEnumerator();

int i = 0;

int cols = myArr->GetLength(myArr->Rank - 1);

while (myEnumerator->MoveNext()) {

if (i < cols)

i++;

else {

Console::WriteLine();

i = 1;

}

Console::Write("{0}\t", myEnumerator->Current);

}

Console::WriteLine();

}

int main(array<System::String^>^ args) {

// Создание и инициализация трехмерного массива типа Int32

Array^ myArr = Array::CreateInstance(Int32::typeid, 2, 3, 4);

for (int i = myArr->GetLowerBound(0); // Первый и последний

i <= myArr->GetUpperBound(0); i++) // индекс в измерении.

for (int j = myArr->GetLowerBound(1);

j <= myArr->GetUpperBound(1); j++)

for (int k = myArr->GetLowerBound(2);

k <= myArr->GetUpperBound(2); k++)

// Присваивание значения элементу

// в указанной позиции 3-мерного массива

myArr->SetValue((i * 100) + (j * 10) + k, i, j, k);

// Вывод свойств массива

Console::WriteLine("Массив имеет {0} размерность(и) и в общей"+

" сложности {1} элементов(а):", myArr->Rank, myArr->Length);

Console::WriteLine("\tДлина\tНижняя\tВерхняя");

for (int i = 0; i < myArr->Rank; i++) {

Console::Write("{0}:\t{1}", i, myArr->GetLength(i));

Console::WriteLine("\t{0}\t{1}", myArr->GetLowerBound(i),

myArr->GetUpperBound(i));

}

// Вывод содержимого массива

Console::WriteLine("\nМассив содержит следующие значения:");

PrintValues(myArr);

Console::ReadLine();

return 0;

}

/* Вывод:

Массив имеет 3 размерность(и) и в общей сложности 24 элементов(а):

Длина Нижняя Верхняя

0: 2 0 1

1: 3 0 2

2: 4 0 3

Массив содержит следующие значения:

0 1 2 3

10 11 12 13

20 21 22 23

100 101 102 103

110 111 112 113

120 121 122 123

*/

 

Сортировка массивов

Пример 7.6: Сортировка массива по возрастанию.

 

#include "stdafx.h"

using namespace System;

int main(array<System::String^>^ args) {

array<int>^ samples = { 27, 3, 54, 11, 18, 2, 16};

Array::Sort(samples); // Сортировка элементов массива

For each (int value in samples) // Вывод элементов массива

Console::Write("{0,8}", value);

Console::WriteLine();

Console::ReadLine();

return 0;

}

// Вывод: 2 3 11 16 18 27 54

 

Можно также отсортировать только диапазон элементов массива. Для этого обращение к функции в предыдущем примере нужно указать так.

 

Array::Sort(samples, 2, 3); // Сортировка элементов со 3-го по 4-й

...

// Вывод: 27 3 11 18 54 2 16

 

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

 

#include "stdafx.h"

using namespace System;

// Сортировка массива ключей (names) и массива объектов (weights).

int main(array<System::String^>^ args) {

array<String^>^ names = { "Виктор", "Антон", "Максим",

"Евгений", "Борис", "Алексей" };

array<int>^ weights = { 62, 84, 72, 68, 90, 78 };

Array::Sort(names, weights); // Сортировка массивов

for each (String^ name in names) // Вывод имен

Console::Write("{0, 10}", name);

Console::WriteLine();

For each (int weight in weights) // Вывод показаний веса

Console::Write("{0, 10}", weight);

Console::WriteLine();

Console::ReadLine();

return 0;

}

/* Вывод:

Алексей Антон Борис Виктор Евгений Maксим

78 84 90 62 68 72

*/

 

Поиск в массиве

Пример 7.8. Поиск значения во всем массиве.

 

#include "stdafx.h"

using namespace System;

int main(array<System::String^>^ args) {

array<int>^ arr = { 23, 45, 68, 94, 123, 127, 150, 203, 299};

int toBeFound = 127; // Искомое значение

int position = Array::BinarySearch(arr, toBeFound); // Поиск

if (position<0)

Console::WriteLine("Значение {0} в массиве не найдено.",

toBeFound);

Else

Console::WriteLine("Значение {0} найдено в {1}-м элементе "+

"массива.", toBeFound, position);

Console::ReadLine();

return 0;

}

// Вывод: Значение 127 найдено в 5-м элементе массива.

 

Чтобы искать в заданном диапазоне элементов массива, можно применить версию функции BinarySearch() с четырьмя параметрами.

 

// Поиск в массиве, начиная с его 4-го элемента и до последнего.

int position = Array::BinarySearch(values, 3, 6, toBeFound);

 

Пример 7.9. Рассмотрим вариант примера 7.7 с добавлением поиска. В двух массивах, как и прежде, размещены имена людей и вес каждого из них, а в третьем – имена людей для поиска информации о них (их веса). Также как и ранее нужно отсортировать первые два массива, а затем выполнить поиск.

 

#include "stdafx.h"

using namespace System;

// Поиск в массиве.

int main(array<System::String^>^ args) {

array<String^>^ names = { "Виктор", "Антон", "Максим",

"Евгений", "Борис", "Алексей",

"Петр", "Сергей", "Даниил", "Иван"};

array<int>^ weights = { 62, 84, 72, 68, 90, 78, 86, 64, 81, 75 };

array<String^>^ toBeFound = { "Борис", "Иван", "Максим",

"Антон", "Федор" };



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-10-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: