Как правило, массив представляет собой набор однотипных данных, расположенных в оперативной памяти таким образом, чтобы по индексам элементов можно было легко вычислить адрес соответствующего значения. Например, пусть одномерный массив А состоит из элементов, расположенных в памяти подряд по возрастанию индексов и каждый элемент занимает по k байт. Тогда адрес 1-го элемента вычисляется по формуле:
адрес(A[i]) = адрес(А[0]) + i * k
Если мы имеем дело с двумерным массивом в размерности MXN, расположенным в памяти по строкам, то адрес элемента в [i, j ] вычисляется по формуле:
адрес(В[i,j]) = адрес(В[0,0]) + (i * N + j) * k
Приведенные выше формулы незначительно усложняются в тех случаях, когда начальные индексы отсчитываются не от нуля, что характерно для Паскаля.
#include <iostream>
using namespace std;
signed main(){
srand(time(NULL));
int a[10], mn = 101, mx = -1;
cout << "Массив: " << "\n";
for(int i = 0; i < 10; i++){
a[i] = rand() % 91 + 10;
cout << a[i] << " ";
if(a[i] % 2 == 1){
mn = min(mn,a[i]);
mx = max(mx,a[i]);
}
}
cout << "\n" << "Минимальный нечетный: " << mn << "\n";
cout << "Максимальный нечетный: " << mx;
}
Как правило, массив представляет собой набор однотипных данных, расположенных в оперативной памяти таким образом, чтобы по индексам элементов можно было легко вычислить адрес соответствующего значения. Например, пусть одномерный массив А состоит из элементов, расположенных в памяти подряд по возрастанию индексов и каждый элемент занимает по k байт. Тогда адрес 1-го элемента вычисляется по формуле:
адрес(A[i]) = адрес(А[0]) + i * k
Если мы имеем дело с двумерным массивом в размерности MXN, расположенным в памяти по строкам, то адрес элемента в [i, j ] вычисляется по формуле:
адрес(В[i,j]) = адрес(В[0,0]) + (i * N + j) * k
Приведенные выше формулы незначительно усложняются в тех случаях, когда начальные индексы отсчитываются не от нуля, что характерно для Паскаля.