Решить задачу для динамического массива, не используя ин дексацию. Даны два одномерных целочисленных массива,
состоящие из одинакового числа элементов. Получить третий
массив той же размерности, каждый элемент которого равен
большему из соответствующих элементов данных массивов.
Вывести адреса нулевых элементов исходного массива.
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");
}
#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");
}
Указатели изучаем? Надо просто уяснить, что имя массива это просто указатель на его первый элемент.
Чтобы "вывести адреса нулевых элементов" достаточно написать cout << a << b ;
Заполнить массив не используя m[ i] можно задав переменную *ptr=m и в цикле (ptr++) выполнять *ptr=x;
В принципе на i-й элемент массива а указывает а+i, но писать *(а+i)=x недопустимо
Чтобы "вывести адреса нулевых элементов" достаточно написать cout << a << b ;
Заполнить массив не используя m[ i] можно задав переменную *ptr=m и в цикле (ptr++) выполнять *ptr=x;
В принципе на i-й элемент массива а указывает а+i, но писать *(а+i)=x недопустимо
Массивы сами заполняем?
Похожие вопросы
- Помогите решить пример на языке C++
- Помогите написать программу в языке C++.
- Здравствуйте, помогите пожалуйста написать программы на языке C++.
- Набрать текст программы на языке (C++) реализующий уравнение
- Помогите решить задачу пожалуйста, в C++
- Нужно написать программу на языке C++
- Помогите пожалуйста решить программу на языке СИ!!!
- Вычислить значение функции F(x), разложенной в ряд и сходящейся в указанной области. Написать программу на языке C++
- Написать Программу на языке C++.
- Написать программу на языке c++
#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;
}