C/C++

Задачи с указателями С++

Дан массив действительных чисел а[i], i = 1..., n. Используя указатели, найти минимальный элемент из его значений с парными номерами.

Входные данные: n=5; a[i]={14,6,13,14,6}

Исходные данные: min=6.
#include <iostream>
using namespace std;
int* min_pos_even(int* box, int* end) {
if (box && end && box <= end) {
auto beg = box + 1;
auto pos = end;
while (beg < end && (*beg & 1)) beg += 2;
if (beg < end) {
pos = beg;
while (beg < end) {
if ((~*beg & 1) && *beg < *pos) pos = beg;
beg += 2;
}
}
return pos;
}
return box;
}
int main() {
int a[]{ 14, 6, 13, 14, 4 };
for (auto x : a) cout << x << ' ';
puts("");
auto end = a + size(a);
auto ptr = min_pos_even(a, end);
if (ptr != end) cout << *ptr << '\n';
else puts("Not found!");
}
ПВ
Павел Волошин
60 236
Лучший ответ
Со вводом длины и компонент динамического массива с экрана:
#include <iostream>
int main() { int i, n; double j, min; std::cout << "n: ";
std::cin >> n; double *a = new double [n];
for (i = 0; i < n; i++) std::cin >> *(a + i);
min = *(a + 1); for (i = 1; i < n; i += 2)
{ j = *(a + i); if (j < min) min = j; }
std::cout << "min = " << min; }
Это если "парные номера" -это чётные номера массива, соответствующие компонентам с нечётными индексами.
В*
Валера ******
66 572