Решить для динамического массива, не используя
индексацию. расположить элементы данного массива в обратном
порядке (первый элемент меняется с последним, второй — с
предпоследним и т.д. до среднего элемента). вывести адреса k
последних элементов исходного массива
c++

Roland227 Roland227    2   13.01.2020 16:44    23

Ответы
angelochekzluk angelochekzluk  14.01.2024 18:55
Добрый день! Конечно, я помогу вам с этим вопросом.

Для начала, давайте разберемся, что такое динамический массив. Динамический массив в C++ - это массив, размер которого определяется во время выполнения программы. Это позволяет нам создавать массивы переменной длины, что очень удобно. В данном случае, нам нужно отсортировать элементы динамического массива в обратном порядке.

Для этого, мы можем использовать указатели. Указатель - это переменная, которая содержит адрес памяти другой переменной. Мы можем использовать указатель для доступа к значению переменной по ее адресу.

Итак, для решения данной задачи, мы будем использовать указатель на первый и последний элементы массива. Затем, мы будем перемещать эти указатели к центру массива, меняя значения каждого из элементов местами.

Ниже приведено пошаговое решение задачи:

1. Создайте динамический массив с помощью оператора new. Пример:
```cpp
int* arr = new int[size];
```
Здесь `size` - это размер массива, который мы будем задавать во время выполнения программы.

2. Заполните массив значениями. Например:
```cpp
for (int i = 0; i < size; i++) {
arr[i] = i + 1;
}
```
В этом примере мы заполняем массив значениями от 1 до `size`.

3. Объявите указатели `start` и `end` и присвойте им адреса первого и последнего элементов массива:
```cpp
int* start = arr;
int* end = arr + size - 1;
```
Здесь `arr` - это указатель на первый элемент массива, `size` - размер массива.

4. Создайте временную переменную `temp` для хранения значения при обмене элементов:
```cpp
int temp;
```

5. Начните цикл, который будет менять элементы местами:
```cpp
while (start < end) {
temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
```
В этом цикле мы сначала сохраняем значение текущего элемента, затем меняем элементы `start` и `end` местами, затем увеличиваем `start` и уменьшаем `end` на 1, чтобы перейти к следующим элементам.

6. Чтобы вывести адреса `k` последних элементов исходного массива, используйте цикл, например:
```cpp
for (int i = 0; i < k; i++) {
cout << &arr[i] << endl;
}
```
Здесь `k` - это количество последних элементов, адреса которых нужно вывести, `&arr[i]` - адрес элемента массива.

7. Не забудьте освободить память, выделенную для динамического массива:
```cpp
delete[] arr;
```

Это и есть решение вашей задачи. Надеюсь, оно вам понятно. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать!
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика