Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
6 / 9 / 0
Регистрация: 19.10.2019
Сообщений: 194

Работа с оператором

29.10.2019, 20:07. Показов 1399. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, не совсем понимаю как это реализовать. В общем задание такое - Вы хотите подтвердить продукт А и Б. Для этого вам нужно обратить внимание на последний Бит от А. Если он равняется 1, то прибавьте Б к А. Независимо от этого удвойте Б и отполовиньте А (с округлением). Это будет продолжаться до тех пор, пока а не достигнет 0.

Например: Должен результат между 23 х 6 быть подтвержден:
[23][/10] =[10111][/2] = 1*[2][/4] + 0 * [2][/3] + 1*[2][/2] +1*[2][/1]+[2][/0]
из чего следует (16+4+2+1) *6 = (16*6) +(4*6)+(2*6) +(1*6)

Я написал немного в виде -
Java
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
Scanner scanner = new Scanner(System.in);
        System.out.println("Geben Sie bitte b ");
        int b = scanner.nextInt();
        System.out.println("Geben Sie bitte a als Bin ");
        
         int binZahl1 = scanner.nextInt();
         int binZahl2 = scanner.nextInt();
         int binZahl3 = scanner.nextInt();
         int binZahl4 = scanner.nextInt();
         int binZahl5 = scanner.nextInt();
         
         int DezZ1 = 16 * binZahl1;
         int DezZ2 = DezZ1 + (8 * binZahl2);
         int DezZ3 = DezZ2 + (4 * binZahl3);
         int DezZ4 = DezZ3 + (2 * binZahl4);
         int a = DezZ4 + (1 * binZahl5);
         
         System.out.println(); //Test необходимо для теста онлайн, не обращайте внимание
         
         for (int i = 0; i <= a; i++) {
            if (binZahl5 >0){
                         
             } else {
 
}
                 System.out.print("Produkt = " + );
             }
Немного не понимаю как реализовать это через оператор..Помогите пж...
Задание должно быть решено без всяких методов и как можно проще с операторами for или while и т.д.
Число А считывается у меня последовательно как int и в конце "пересчитывается" в десятичное.

Добавлено через 1 минуту
Сорри, не совсем понял как у вас тут пользоваться числом в степени.. [23][/10] - первое число, читается как обычное ,а число после / как степень.. спасибо
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.10.2019, 20:07
Ответы с готовыми решениями:

Работа с оператором if
Не могу найти ошибку.... Программа не закончена, но должна работать))) В общем: Производство деталей включает длительный процесс...

Работа с оператором for
Использовать оператора цикла с параметром (for) Найти сумму положительных компонент вектора . Элементы вектора определяются по формуле:...

Работа с оператором rand()
Программа выдает не наугад, а по закономерности. void machin(int jp, int ip) { int randTj, randTi; if ((jp == 1) &amp;(ip...

11
66 / 43 / 24
Регистрация: 18.08.2019
Сообщений: 129
29.10.2019, 21:58
Лучший ответ Сообщение было отмечено StalinStr как решение

Решение

Немного непонятно вообще все
Если рассматривать первый абзац - то достаточно такого:
Java
1
2
3
4
5
        while (a > 0) {
            if (a % 2 != 0) a += b; // если последний бит a == 1 (a - нечетное), прибавляем b к a
            b *= 2; // умножаем b * 2
            a /= 2; // какое округление надо?
        }
Второй абзац и приведенный за ним код не понял. Если нужны только две переменные - зачем выполняется ввод кучи значений?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
29.10.2019, 22:26
Цитата Сообщение от StalinStr Посмотреть сообщение
Вы хотите подтвердить продукт А и Б
по-английски чтоли пиши
0
66 / 43 / 24
Регистрация: 18.08.2019
Сообщений: 129
29.10.2019, 22:30
xoraxax, судя по коду, там немецкий оригинал, так что лучше не будет.
0
6 / 9 / 0
Регистрация: 19.10.2019
Сообщений: 194
30.10.2019, 00:35  [ТС]
Цитата Сообщение от xoraxax Посмотреть сообщение
по-английски чтоли пиши
тут уж сори, я на немецком больше чем на англ) В общем то число А, которое введено было как бинарный код 10111, перекодируется в обычное десятичное, что я и сделал. По последнему введенному биту будет определено будет запущен оператор или нет, если последнее бинарное число будет 1, то оператор будет запущен, если нет - то ничего изменено не будет. Если последнее число 1, то к А прибавится Б и независимо от этого будет удвоено Б и разделено пополам А. Это будет продолжаться до тех пор, пока А не станет 0!

Добавлено через 1 минуту
Цитата Сообщение от davson Посмотреть сообщение
Немного непонятно вообще все
Если рассматривать первый абзац - то достаточно такого:
Java
1
2
3
4
5
        while (a > 0) {
            if (a % 2 != 0) a += b; // если последний бит a == 1 (a - нечетное), прибавляем b к a
            b *= 2; // умножаем b * 2
            a /= 2; // какое округление надо?
        }
Второй абзац и приведенный за ним код не понял. Если нужны только две переменные - зачем выполняется ввод кучи значений?
На счет округления сам не понял к чему оно, но оно стояло в задании.. Думал может там что-то магическое произойдет, что нужно будет округлять..аахха (((

Добавлено через 1 час 6 минут
В общем такое дело, с помощью оператора и этих приколов с делением, и умножением надо получить число, которое при обычном умножении 23 * 6 получено было бы,а именно 136.. В программе число 23 вводится с помощью бинарного кода только... Например, я ввел 23 бинарным кодом и любое число Б, например, 8 и мне бы с помощью оператора посчитало бы сколько 23 * 8 равно ..
0
66 / 43 / 24
Регистрация: 18.08.2019
Сообщений: 129
30.10.2019, 09:38
Долго курил, стал подозревать, что требуется выполнить умножение используя только сдвиги и сложение.
Тогда -> Генри Уоррен "Алгоритмические трюки для программистов" (2014) гл.8.4. в качестве теории.
Вот код оттуда, который на удивление похож на то, что пытается изложить ТС (правда на C)
Кликните здесь для просмотра всего текста
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
#include <stdio.h>
unsigned nlz(int);
#pragma mc_func nlz { "7c630034" }      /* PowerPC cntlzw r3,r3. */
#pragma reg_killed_by nlz               /* Set reg kill to "none." */
 
int main(int argc, char* argv[], char* envp[]) {
   // Enter control-c to quit this program.
 
   unsigned x, y, z, m, n, t;
 
again:
   printf("Enter two hex operands\n");
   scanf("%x %x", &x, &y);
 
// ------------------------------ cut ----------------------------------
   m = nlz(x);
   n = nlz(y);
   if (m + n <= 30) goto overflow;
   t = x*(y >> 1);
   if ((int)t < 0) goto overflow;
   z = t*2;
   if (y & 1) {
      z = z + x;
      if (z < x) goto overflow;
   }
   // z is the correct product of x and y.
// ------------------------------ cut ----------------------------------
 
   printf("%x x %x = %x\n", x, y, z);
   goto again;
 
overflow:
   printf("Overflows\n");
   goto again;
}
1
6 / 9 / 0
Регистрация: 19.10.2019
Сообщений: 194
31.10.2019, 15:45  [ТС]
Цитата Сообщение от davson Посмотреть сообщение
Долго курил, стал подозревать, что требуется выполнить умножение используя только сдвиги и сложение.
Тогда -> Генри Уоррен "Алгоритмические трюки для программистов" (2014) гл.8.4. в качестве теории.
Вот код оттуда, который на удивление похож на то, что пытается изложить ТС (правда на C)
Кликните здесь для просмотра всего текста
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
#include <stdio.h>
unsigned nlz(int);
#pragma mc_func nlz { "7c630034" }      /* PowerPC cntlzw r3,r3. */
#pragma reg_killed_by nlz               /* Set reg kill to "none." */
 
int main(int argc, char* argv[], char* envp[]) {
   // Enter control-c to quit this program.
 
   unsigned x, y, z, m, n, t;
 
again:
   printf("Enter two hex operands\n");
   scanf("%x %x", &x, &y);
 
// ------------------------------ cut ----------------------------------
   m = nlz(x);
   n = nlz(y);
   if (m + n <= 30) goto overflow;
   t = x*(y >> 1);
   if ((int)t < 0) goto overflow;
   z = t*2;
   if (y & 1) {
      z = z + x;
      if (z < x) goto overflow;
   }
   // z is the correct product of x and y.
// ------------------------------ cut ----------------------------------
 
   printf("%x x %x = %x\n", x, y, z);
   goto again;
 
overflow:
   printf("Overflows\n");
   goto again;
}
Уже решил эту задачу, просто модуль числа 2 делал и если не было 0, то проделывал всю ту махинацию, которая написана выше..спс
0
 Аватар для Aviz__
2748 / 2056 / 508
Регистрация: 17.02.2014
Сообщений: 9,483
31.10.2019, 15:56
Цитата Сообщение от StalinStr Посмотреть сообщение
решил
покажи, пожалуйста решение, сюда

Добавлено через 5 минут
да ладно, ты столько намутил тумана, а решения то во втором посте!
0
6 / 9 / 0
Регистрация: 19.10.2019
Сообщений: 194
31.10.2019, 16:12  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
покажи, пожалуйста решение, сюда

Добавлено через 5 минут
да ладно, ты столько намутил тумана, а решения то во втором посте!
Согласен, но пока дошло до самого что надо..аха
Решение
Java
1
2
3
4
5
6
while (c > 0) {
             if (c % 2 != 0) {
                P += t;}
                t *= 2; 
                c /= 2;
}
(Буквы немного изменил чтобы не нашли в гугле слишком просто)
0
 Аватар для Aviz__
2748 / 2056 / 508
Регистрация: 17.02.2014
Сообщений: 9,483
31.10.2019, 18:17
Цитата Сообщение от StalinStr Посмотреть сообщение
до самого что надо
так ты не нашел, как получить 23 ][ 6 = 136, где ][ - твой метод?!
0
6 / 9 / 0
Регистрация: 19.10.2019
Сообщений: 194
31.10.2019, 19:01  [ТС]
Цитата Сообщение от Aviz__ Посмотреть сообщение
так ты не нашел, как получить 23 ][ 6 = 136, где ][ - твой метод?!
Сверху он и есть, я ввожу С как бинарное число 10111 = 23 и ввожу T как 6! И while записывая все в P через % выдает мне 136 И так все с любым другим числом... Просто Сканнер нужно и переменные ввести.. а так весь метод )
0
 Аватар для Aviz__
2748 / 2056 / 508
Регистрация: 17.02.2014
Сообщений: 9,483
31.10.2019, 19:39
(16*6) +(4*6)+(2*6) +(1*6) = 138, же!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.10.2019, 19:39
Помогаю со студенческими работами здесь

работа с условным оператором if
&quot;работы с условным оператором if&quot; #include &quot;StdAfx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include...

работа с условным оператором
Всем доброго вечера. Недавно делал небольшой скрипт с использованием условного оператора и обнаружил такую проблему: приведенный ниже...

Работа с строчным оператором
Я студент 1 курса ...и не понимаю Архитектуру ЭВМ.Почему? ну наверное слаб + предпод у нас гениальный человек , но он не может быть...

Работа с оператором UPDATE
Всем доброго времени суток! Подскажите, можно ли изменить sql-запросом записи в таблице так, чтобы для каждого значения одного поля...

Работа с тернарным оператором
Не хочу создавать отдельную тему. Вопрос - тернарный оператор выражение1 ? выражение2 : выражение3. Если у меня не предполагается...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru