C/C++

Помогите решить программу на языке c++

Решить задачу для динамического массива, не используя ин дексацию. Даны два одномерных целочисленных массива,
состоящие из одинакового числа элементов. Получить третий
массив той же размерности, каждый элемент которого равен
большему из соответствующих элементов данных массивов.
Вывести адреса нулевых элементов исходного массива.
#include <iostream>
#include <iomanip>
using namespace std;
void mergemax(int* m, int* a, int* b, const size_t n) {
auto m_begin = m;
const auto m_end = m + n;
auto a_begin = a;
const auto a_end = a + n;
auto b_begin = b;
const auto b_end = b + n;
while (m_begin != m_end) {
*m_begin = *a_begin > *b_begin ? *a_begin : *b_begin;
++m_begin;
++a_begin;
++b_begin;
}
}
void fill(int* box, const size_t n) {
auto begin = box;
const auto end = box + n;
cout << "Input " << n << " elements: ";
while (begin != end) {
cin >> *begin;
++begin;
}
}
void show(int* box, const size_t n) {
auto begin = box;
const auto end = box + n;
cout << "Elements: ";
while (begin != end) {
cout << *begin << ' ';
++begin;
}
puts("");
}
void addresses_zero(int* box, const size_t n) {
auto begin = box;
const auto end = box + n;
cout << "Zero element addresses: ";
while (begin != end) {
if (!*begin) cout << setw(8) << setfill('0') << begin << ' ';
++begin;
}
puts("");
}
int main() {
cout << "Input n: ";
size_t n;
cin >> n;
auto a = new int[n];
fill(a, n);
auto b = new int[n];
fill(b, n);
auto m = new int[n];
mergemax(m, a, b, n);
show(m, n);
addresses_zero(a, n); // Исходным массив определён на правах художника
delete[] a;
delete[] b;
delete[] m;
system("pause > nul");
}
Манас Каримкулов
Манас Каримкулов
71 521
Лучший ответ
Указатели изучаем? Надо просто уяснить, что имя массива это просто указатель на его первый элемент.
Чтобы "вывести адреса нулевых элементов" достаточно написать cout << a << b ;
Заполнить массив не используя m[ i] можно задав переменную *ptr=m и в цикле (ptr++) выполнять *ptr=x;
В принципе на i-й элемент массива а указывает а+i, но писать *(а+i)=x недопустимо
TM
Tural Mehreli
62 656
Массивы сами заполняем?
Aidaulet Aludin
Aidaulet Aludin
4 199
Aidaulet Aludin #include
#include

using namespace std;

int main()
{
int a;
int n;
vectorarr1;
vectorarr2;
vectorarr3;
cin >> n; //число элементов массива

for (int i = 0; i < n; i++)
{
cin >> a;
arr1.push_back(a);
}

for (int i = 0; i < n; i++)
{
cin >> a;
arr2.push_back(a);
}

for (int i = 0; i < n; i++)
{
if (arr1[i] > arr2[i])
{
arr3.push_back(arr1[i]);
}
else
{
arr3.push_back(arr2[i]);
}
}
cout << "Элементы массива: " << endl;
for (int i = 0; i < n; i++)
{
cout << arr3[i] << endl;

}
return 0;
}