Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <Windows.h>
- using namespace std;
- int* dec2bin_no_ne_sovsem(int num, int& size);
- int bin2dec_no_ne_sovsem(int size, int* arr);
- int main() {
- int* arr = nullptr;
- int size;
- int n =1000;
- bool qwe = true;
- setlocale(LC_ALL, "russian");
- //главный цикл
- while (qwe) {
- cout << " число: " << n << endl;
- cout << "бинарное представление: ";
- arr = dec2bin_no_ne_sovsem(n, size);
- for (int i = 0; i < size; i++) {
- cout << arr[i];
- }
- cout << endl;
- // Уменьшаем размер массива на один элемент
- int newSize = size - 1;
- int* newArr = new int[newSize];
- // Копируем все элементы из исходного массива, кроме последнего
- copy(arr, arr + newSize, newArr);
- // Освобождаем память, выделенную под новый массив
- delete[] newArr;
- size = newSize;
- cout << "удалили последний элемент: ";
- for (int i = 0; i < size; i++) {
- cout << arr[i];
- }
- cout << endl;
- cout << "последнее число :" << arr[size - 1] << endl;
- // Если число четное
- if (n%2 == 0) {
- // Увеличиваем размер массива на 2
- int newSize = size + 2;
- int* newArr = new int[newSize];
- // Копируем все элементы из исходного массива
- copy(arr, arr + size, newArr);
- // Добавляем в конец "01"
- newArr[newSize - 2] = 0;
- newArr[newSize - 1] = 1;
- // Освобождаем память, выделенную под новый массив
- delete[] arr;
- arr = newArr;
- size = newSize;
- cout << "добавили в конец 01: ";
- for (int i = 0; i < size; i++) {
- cout << arr[i];
- }
- cout << endl;
- }
- // Если число нечетное
- else if (n%2 == 1) {
- // Увеличиваем размер массива на 2
- int newSize = size + 2;
- int* newArr = new int[newSize];
- // Копируем все элементы из исходного массива
- copy(arr, arr + size, newArr);
- // Добавляем в конец "10"
- newArr[newSize - 2] = 1;
- newArr[newSize - 1] = 0;
- // Освобождаем память, выделенную под новый массив
- delete[] arr;
- arr = newArr;
- size = newSize;
- cout << "добавили в конец 10: ";
- for (int i = 0; i < size; i++) {
- cout << arr[i];
- }
- cout << endl;
- }
- cout << "десятичное: " << bin2dec_no_ne_sovsem(size, arr) << endl;
- if (bin2dec_no_ne_sovsem(size, arr) == 2018) {
- for (int i = 0; i < size - 1; i++) {
- cout << arr[i];
- }
- qwe = false;
- }
- n++;
- // Sleep(100);
- }
- delete[] arr;
- return 0;
- }
- int* dec2bin_no_ne_sovsem(int num, int& size) {
- int counter = 0;
- int temp = num;
- // Определяем размер массива
- while (temp > 0) {
- temp /= 2;
- counter++;
- }
- size = counter;
- // Выделяем память под массив
- int* arr = new int[counter];
- // Заполняем массив бинарным представлением числа
- for (int i = counter - 1; i >= 0; i--) {
- arr[i] = num % 2;
- num /= 2;
- }
- return arr;
- }
- int bin2dec_no_ne_sovsem(int size, int* arr) {
- int dec = 0;
- int k = 1;
- // Преобразование бинарного числа в десятичное
- for (int i = size-1; i >= 0; i--) {
- dec += arr[i] * k;
- k *= 2;
- }
- return dec;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement