Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для SW Developer
97 / 93 / 81
Регистрация: 10.01.2016
Сообщений: 663
Записей в блоге: 13

Дано целое число. Произвести циклический сдвиг этого числа вправо на четыре разряда

03.05.2022, 11:32. Показов 1862. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Условие задачи: "Дано целое число. Произвести циклический сдвиг этого числа вправо на четыре разряда."

Я вот не пойму, каким способом двигать, другие условия не указаны.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.05.2022, 11:32
Ответы с готовыми решениями:

Дано целое число. Проинвертировать младшие четыре бита этого числа
Помогите пожалуйста дописать программу. Кусочек у меня есть в 2 варианта. Первый вариант я ввожу число, и оно переводится в двоичное. А...

Произвести циклический сдвиг вектора на K элементов вправо
Произвести циклический сдвиг на K элементов вправо заданного вектора размерности N.

Произвести циклический сдвиг вправо элементов массива
Люди в Си++ дуб дубом. Помагите очень надо. Вот текст задачи. Ввести одномерный целочисленный массив A, вывести его. Произвести...

5
Злостный нарушитель
 Аватар для Verevkin
10339 / 5757 / 1269
Регистрация: 12.03.2015
Сообщений: 26,581
03.05.2022, 12:34
Цитата Сообщение от SW Developer Посмотреть сообщение
Произвести циклический сдвиг этого числа вправо на четыре разряда.
Надеюсь, имеются в виду двоичные разряды?
Изучение битовых операций
0
 Аватар для SW Developer
97 / 93 / 81
Регистрация: 10.01.2016
Сообщений: 663
Записей в блоге: 13
03.05.2022, 12:35  [ТС]
Verevkin, вот и я не пойму.
0
Злостный нарушитель
 Аватар для Verevkin
10339 / 5757 / 1269
Регистрация: 12.03.2015
Сообщений: 26,581
03.05.2022, 12:40
Цитата Сообщение от SW Developer Посмотреть сообщение
вот и я не пойму.
Ну так спроси у препода, ёмаё.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
03.05.2022, 12:47
Если десятичные
C++
1
2
3
4
5
int p = 1;
while(p <N)
  p =*10;
p/= 10000;
cout << (N%10000)*p + N/10000;
0
Злостный нарушитель
 Аватар для Verevkin
10339 / 5757 / 1269
Регистрация: 12.03.2015
Сообщений: 26,581
03.05.2022, 12:54
Цитата Сообщение от Байт Посмотреть сообщение
Если десятичные
да, я тоже баловался...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <stdio.h>
#include <stdlib.h>
 
// циклический сдвиг целого со знаком n на s десятичных разрядов вправо.
// для отрицательных s будет работать сдвиг влево.
 
//--------------------------------------------------
// Вариант 1 - с поразрядным делннием:
int shift_divmod(int n, int s)
{ 
  int len = 1, factor = 1, sign = n < 0 ? -1 : 1;
  n = abs(n);
  
  for (int temp = n; temp > 9; len++) 
    temp /= 10, factor *= 10;
    
  if (s < 0) s += len;
  
  if (len > 1 && (s %= len))  
    while (s--) 
      n = (n / 10) + (n % 10) * factor;
      
  return sign * n;
}
//--------------------------------------------------
 
 
//--------------------------------------------------
// вычисление 10^p
inline unsigned pow10(unsigned p)
{
  if (!p) return 1;
  return 10 * pow10(p - 1);
}
 
// вычисление количества десятичных разрядов числа
inline unsigned len10(unsigned x)
{
  if (x < 10) return 1;
  return 1 + len10(x / 10);
}
 
// вариант 2 - с перестановкой частей:
int shift_swap(int n, int s)
{
  int sign = n < 0 ? -1 : 1;
  n = abs(n);
  unsigned len = len10(n);
  if (s < 0) s += len;
  return sign * ((len > 1 && (s %= len)) ? ((n % pow10(s)) * pow10(len - s) + n / pow10(s)) : n);
}
//--------------------------------------------------
 
#define MAX 100000000
#define shift shift_divmod
//#define shift shift_swap
 
int main()
{
  for (int idx = 6; idx != -7; idx--)
  {
    int x = (MAX >> 1) - rand() % MAX;
    printf("# %-11d --- %+d --> %11d\n", x, idx, shift(x, idx)); 
  }
 
  printf("# %-11d --- %+d --> %11d\n", MAX, 2, shift(MAX, 2)); 
  printf("# %-11d --- %+d --> %11d\n", MAX, -3, shift(MAX, -3)); 
  
  return 0;
}
результаты:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 45710617    --- +6 -->    71061745
# 3069114     --- +5 -->     6911430
# -31692777   --- +4 -->   -27773169
# 35363085    --- +3 -->     8535363
# -7747793    --- +2 -->    -9377477
# 25761665    --- +1 -->    52576166
# 30114614    --- +0 -->    30114614
# 239508      --- -1 -->      395082
# -46516649   --- -2 -->   -51664946
# -39641421   --- -3 -->   -41421396
# 24797638    --- -4 -->    76382479
# -490027     --- -5 -->     -749002
# -33368690   --- -6 -->   -90333686
# 100000000   --- +2 -->     1000000
# 100000000   --- -3 -->         100
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2022, 12:54
Помогаю со студенческими работами здесь

Произвести циклический сдвиг вправо 8-байтового кода
Доброго времени суток! Дали вот такое задание &quot;Произвести циклический сдвиг вправо 8-байтового кода, находящегося по адресу 0000h. Сдвигать...

Произвести циклический сдвиг столбцов квадратной матрицы A[N] на K позиций вправо
Входные данные: Одно натуральное число N. Далее с новой строки N строк по N целых чисел в каждой. N не превышают десяти. Затем с новой...

Произвести циклический сдвиг элементов каждого столбца матрицы на один элемент вправо
2. Задан двумерный массив А, заполненный числами из интервала . Произвести циклический сдвиг элементов каждого столбца матрицы на один...

В массиве трижды произвести циклический сдвиг вправо всех элементов, следующих за минимальным из чётных
Ввести одномерный целочисленный массив А, вывести его. В массиве трижды произвести циклический сдвиг вправо всех элементов следующих за...

Произвести циклический сдвиг элементов расположенных вне границ между максимумом и минимумом вправо
Помогите пожалуйста с задачей: Ввести одномерный массив A, вывести его. Произвести циклический сдвиг элементов расположенных вне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru