Берем, например, число 29. Поскольку это число нечетное, отнимаем от него единицу, - записываем ее отдельно, а число делим пополам. Получилось 14. (1) Число 14 - четное. Отнимать от него единицу не нужно, поэтому слева от "запомненной" единицы запишем 0. Число делим пополам, получаем 7. (0) Число 7 - опять нечетное. Отнимаем от него 1, записываем отдельно и делим число пополам. Получаем 3. (1) Число 3 - нечетное. Отнимаем 1, записываем ее отдельно, и результат делим пополам, получаем 1. (1) Последнюю единицу уже не делим, а просто записываем слева от полученного результата. Смотрим на результат. У нас получилось двоичное число - это и есть двоичный код числа 29.
Число 14 - четное. Отнимать от него единицу не нужно, поэтому слева от "запомненной" единицы запишем 0. Число делим пополам, получаем 7. (0)
Число 7 - опять нечетное. Отнимаем от него 1, записываем отдельно и делим число пополам. Получаем 3. (1)
Число 3 - нечетное. Отнимаем 1, записываем ее отдельно, и результат делим пополам, получаем 1. (1)
Последнюю единицу уже не делим, а просто записываем слева от полученного результата.
Смотрим на результат. У нас получилось двоичное число - это и есть двоичный код числа 29.
#include <iostream>
using namespace std;
int main(void)
{const int n=6;
int arr[n],c;
for(int i=0;i<n;i++)
cin>>arr[i];
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(arr[i]>arr[j] && arr[i]%2==0 && arr[j]%2==0)
{c=arr[i];
arr[i]=arr[j];
arr[j]=c;}
for(int i=0;i<n-1;i++)
for(int j=i+1;j<n;j++)
if(arr[i]<arr[j] && arr[i]%2!=0 && arr[j]%2!=0)
{c=arr[i];
arr[i]=arr[j];
arr[j]=c;}
cout<<"Array"<<endl;
for(int i=0;i<n;i++)
cout<<arr[i]<<" ";
return 0;}
Пример ввода:
2 6 4 1 5 3
Пример вывода:
Array
2 4 6 5 3 1