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




int result = 0; // Значение возврата

for each (String^ name in toBeFound) { // Для каждого элемента

result = Array::BinarySearch(names, name); // Поиск имен

if (result < 0) // Проверка результата поиска

Console::WriteLine("{0} в списке не найден.", name);

Else

Console::WriteLine("{0} весит {1} кг.",

name, weights[result]); // Вывод имени и веса

}

Console::ReadLine();

return 0;

}

/* Вывод:

Борис весит 90 кг.

Иван весит 75 кг.

Максим весит 72 кг.

Антон весит 84 кг.

Федор в списке не найден.

*/

 

 

Массивы массивов

 

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

 

// Объявление массива массивов

array<array<int^>^>^ arr = gcnew array<array<int^>^>(3);

arr[0] = gcnew array<int^>(4);

arr[1] = gcnew array<int^>(5);

arr[2] = gcnew array<int^>(3);

// Объявление массива массивов и инициализация его элементов

array<array<int^>^>^ arr = gcnew array<array<int^>^>(3);

arr[0] = gcnew array<int^> { 1, 2, 3, 4 };

arr[1] = gcnew array<int^> { 9, 7, 5, 3, 1 };

arr[2] = gcnew array<int^> { 11, 33, 22 };

// Альтернативный синтаксис инициализации массива массивов

array<array<int^>^>^ arr = gcnew array<array<int^>^> {

gcnew array<int^> { 1, 2, 3, 4 },

gcnew array<int^> { 9, 7, 5, 3, 1 },

gcnew array<int^> { 11, 33, 22 }

};

// Доступ к отдельным элементам массива

arr[0][1] = 102;

arr[2][1] = 133;

 

Пример 7.10. Создание массива массивов и вывод на экран его элементов.

 

#include "stdafx.h"

using namespace System;

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

// Объявление массива, состоящего из 3-х массивов

array<array<int^>^>^ arr = gcnew array<array<int^>^>(3);

// Инициализация элементов

arr[0] = gcnew array<int^> { 1, 2, 3, 4 };

arr[1] = gcnew array<int^> { 9, 7, 5, 3, 1 };

arr[2] = gcnew array<int^> { 11, 33, 22 };

// Вывод на экран элементов массива

Console::WriteLine("Массив массивов содержит {0} массива(ов):",

arr->Length);

for (int i = 0; i < arr->Length; i++) {

Console::Write("Элементы массива ({0}):", i);

for (int j = 0; j < arr[i]->Length; j++)

Console::Write(" {0}", arr[i][j]);

Console::WriteLine();

}

Console::ReadLine();

return 0;

}

/* Вывод:

Массив массивов содержит 3 массива(ов):

Элементы массива (0): 1 2 3 4

Элементы массива (1): 9 7 5 3 1

Элементы массива (2): 11 33 22

*/

 

 

Массивы указателей

 

Указатели можно сохранять в массиве. При объявлении массива указателей используется следующий синтаксис:

 

тип *имяМассива[количество_элементов];

 

Пример использования массива указателей:

 

int *p[3]; // Массив указателей из трех элементов

int x = 10, y = 20, z = 30;

p[0] = &x;

p[1] = &y;

p[2] = &z;

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

System::Console::Write("{0,4}", *p[i]); // Вывод: 10 20 30

System::Console::WriteLine();

 

 

Динамические массивы

 

Динамическое выделение памяти под массив и ее освобождение производится следующим образом:

 

<указатель> = new <Тип>[<Количество_элементов>];

Выполнение операций с массивом

delete [] <указатель>;

 

Пример 7.11. Динамическое выделение памяти под массив.

 

#include "stdafx.h"

using namespace System;

int main() {

const short SIZE = 3; // Размер массива

int *p = 0; // Создание указателя

p = new int[SIZE]; // Выделение памяти под массив

p[0] = 10; //

p[1] = 20; // Использование памяти

p[2] = 30; //

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

Console::Write("{0,4}", p[i]); // Вывод: 10 20 30

Console::WriteLine();

delete [] p; // Освобождение памяти

p = 0; // Обнуление указателя

Console::ReadLine();

return 0;

}

 

Пример 7.13. Нахождение простых чисел, используя для их размещения динамическую память.

 

#include "stdafx.h"

#include <new>

using namespace System;

int main() {

long* pprime(nullptr); // Указатель на массив простых чисел

Long trial(5); // Кандидат в простые числа

Int count(3); // Счетчик найденных простых чисел

Int found(0); // Признак обнаружения простого числа

Int max(0); // Количество требуемых простых чисел

Console::Write("Введите количество простых чисел, " +

"которые хотите получить (минимум 4): ");

//String^ input = Console::ReadLine();

max = Int32::Parse(Console::Read());

// Проверка ввода пользователя, чтобы значение было не меньше 4.

// Если же указано меньше, то принудительное назначение количества.

if (max < 4) max = 4;

pprime = new long[max];

// Если выделить область памяти не удастся, то

// программа в этой точке будет прервана исключением.

*pprime = 2; // Вставить

*(pprime + 1) = 3; // три первых

*(pprime + 2) = 5; // простых числа

do {

trial += 2; // Следующее значение для проверки

found = 0; // Установка признака "найдено"

for (int i = 0; i < count; i++) { // Деление на ранее

// найденные простые числа

// Истинно, если делится без остатка,

// а значит, число не простое.

found = (trial % *(pprime + i)) == 0;

if (found) break;

}

if (found == 0) // Найдено...

*(pprime + count++) = trial; //... сохраняем в массиве

// простых чисел

} while (count < max);

// Вывести по 5 простых чисел в строке

for (int i = 0; i < max; i++) {

if (i % 5 == 0) // Перевод строки перед первым и

Console::WriteLine(); // каждым пятым элементом

Console::Write("{0,8}", *(pprime + i));

}

Console::WriteLine();

delete [] pprime; // Освободить память и

pprime = nullptr; // обнулить указатель

Console::ReadLine();

return 0;

}

/* Вывод:



Поделиться:




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

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


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