Уменя два по лазарусу 1. дан одномерный массив. найти количество элементов, больших сред- него арифметического всех элементов массива. 2. из элементов одномерного массива с сформировать массив а той же размерности по правилу: если номер элемента четный, то ai ci ; если номер элемента нечетный, то 2
0⁶1⁵1⁴1³0²1¹1⁰₂ = 0 · 2⁶ + 1 · 2⁵ + 1 · 2⁴ + 1 · 2³ + 0 · 2² + 1 · 2¹ + 1 · 2⁰ = 0 + 32 + 16 + 8 + 0 + 2 + 1 = 59₁₀
10 → 259 / 2 = 29 (1), где число в скобках - это остаток
29 / 2 = 14 (1)
14 / 2 = 7 (0)
7 / 2 = 3 (1)
3 / 2 = 1 (1)
1 / 2 = 1 (1), нельзя поделить 1 на 2 без получения дробной части, поэтому в остатке остается та единица, которую мы делили на 2
Снизу вверх восстанавливаем цепочку двоичного кода:
111011₂
Объясняю, почему мы не получили нолик вначале.. Нолик добавляется в запись в основном, чтобы дополнить двоичный код до 8 бит, но в твоем случае это 7 бит. Это ни на что не влияет.
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
srand(time(0));
int a, b;
int min = 100, posI, posJ;
cin >> a >> b;
int** matrix = new int*[a];
for (int i = 0; i < a; i++)
matrix[i] = new int[b];
for (int i = 0; i < a; i++)
{
for (int j = 0; j < b; j++)
matrix[i][j] = rand() % min;
}
for (int i = 0; i < a; i++)
{
for (int j = 0; j < b; j++)
cout << matrix[i][j] << '\t';
cout << endl;
}
for (int i = 0; i < a; i++)
{
for (int j = 0; j < b; j++)
if (matrix[i][j] < min)
{
posI = i;
posJ = j;
min = matrix[i][j];
}
}
matrix[posI][posJ] = matrix[0][0];
matrix[0][0] = min;
cout << endl;
for (int i = 0; i < a; i++)
{
for (int j = 0; j < b; j++)
cout << matrix[i][j] << '\t';
cout << endl;
}
for (int i = 0; i < a; i++)
delete[] matrix[i];
delete[] matrix;
system("pause");
return 0;
}