0 / 0 / 0
Регистрация: 25.09.2022
Сообщений: 36
|
||||||
1 | ||||||
Перебор массива в цикле; не выводится нужный результат25.09.2022, 18:18. Показов 1383. Ответов 19
Метки нет (Все метки)
Здравствуйте! Вероятно, вопрос и код содержат в себе базовые вещи, которых я не понимаю в силу недавнего знакомства с языком, но требуется помощь. Задача программы - вывод числа, обладающего следующими свойствами: число заканчивается на 2, при переставлении этой цифры в начало получается число в два раза больше. Следовательно, требуется последовательно работать со степенями двойки: 2, 4, 8 просто выводятся как часть нужного нам числа, т.к. они меньше 10, а все следующие степени делятся с остатком на 10, остаток программа выводит как часть соответствующего числа, а результат целочисленного деления на 10 запоминается в переменной и прибавляется к следующей степени двойки, с которой дальше и производится работа. Механику выполнения программы понимаю, но написать не выходит. Ограничение, которое остановит выполнение программы на нужных нам 18 цифрах ответа и не уйдет в бесконечность, пока вообще не уверена, как написать. Требуемый ответ: 248 637 498 751 362 501.
0
|
25.09.2022, 18:18 | |
Ответы с готовыми решениями:
19
Перебор элементов массива в цикле Перебор элементов массива в цикле for Перебор экземпляров массива в цикле Не вызывается нужный элемент массива по значению управляющей переменной в цикле for |
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
|
|
25.09.2022, 18:28 | 2 |
обьясните назначение этой строки
#define iSizeAr 50
0
|
0 / 0 / 0
Регистрация: 25.09.2022
Сообщений: 36
|
|
25.09.2022, 18:31 [ТС] | 3 |
Простите, строка явно лишняя. Не заметила и не убрала при редактировании и отправке на форум.
0
|
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
|
|
25.09.2022, 18:34 | 4 |
0
|
0 / 0 / 0
Регистрация: 25.09.2022
Сообщений: 36
|
|
25.09.2022, 18:39 [ТС] | 5 |
На данный момент назначения не имеет, впоследствии - для добавления строчек формата "ответ"/"искомое число". Работу скидывать преподавателю, хотелось бы, чтобы выглядело соответствующе.
0
|
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
|
|
25.09.2022, 18:40 | 6 |
задание еапишите, а ваши мысли в виде камментов к коду напишите
и запакуйте исходник в CODE а то- нечитабельно
0
|
687 / 444 / 209
Регистрация: 18.10.2020
Сообщений: 1,606
|
|
25.09.2022, 18:51 | 7 |
SergP01, в этом куске смысл отсутствует...
А вообще девушка такой фигни тут понаписала, мдя. как можно получить такие ответы, если число должно оканчиваться на 2?
0
|
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
|
|
25.09.2022, 18:58 | 8 |
дык... я так и не понял чего она хочет..
задание написано так, что его нужно пытаться понять.... если она ТЗ правильно напишет, то она и код сама напишет
0
|
0 / 0 / 0
Регистрация: 25.09.2022
Сообщений: 36
|
|
25.09.2022, 18:59 [ТС] | 9 |
Оно выводится в данном случае с конца. Фактически ответ, конечно же, 105 263 157 894 736 842. Про решение соответствующей задачи можно почитать в интернете. Цель создания темы - узнать, как исправить код, а не получить констатацию факта о том, что он работает неверно.
0
|
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
|
|
25.09.2022, 19:00 | 10 |
вопрос ТСу ... что это делает
for (int i = 1; i <= num; i++) { arr[i] = a0 << i;
0
|
687 / 444 / 209
Регистрация: 18.10.2020
Сообщений: 1,606
|
|
25.09.2022, 19:01 | 11 |
0
|
0 / 0 / 0
Регистрация: 25.09.2022
Сообщений: 36
|
||||||
25.09.2022, 19:08 [ТС] | 12 | |||||
0
|
101 / 95 / 10
Регистрация: 31.08.2022
Сообщений: 1,014
|
|
25.09.2022, 19:10 | 13 |
0
|
0 / 0 / 0
Регистрация: 25.09.2022
Сообщений: 36
|
|
25.09.2022, 19:10 [ТС] | 14 |
Это одно число. Даже в теме указано, что нужный результат имеет 18 знаков.
0
|
0 / 0 / 0
Регистрация: 25.09.2022
Сообщений: 36
|
|
25.09.2022, 19:16 [ТС] | 15 |
Без замены первой цифры. Просто переставляется. «Заменяется» я не писала.
Добавлено через 5 минут Сдвиг влево на i разрядов. Будет иметь тот же смысл, что и умножение на 2 i раз. Если массив следует создать иначе или в этом заключается проблема - скажите об этом, пожалуйста.
0
|
Вездепух
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,062
|
|||||||||||
25.09.2022, 22:27 | 16 | ||||||||||
Сообщение было отмечено tusqk как решение
Решение
Относительно недавно мы уже решали аналогичную задачу здесь. Искомое число можно "соткать" от младших цифр к старшим 2, 4, 8, 6 (перенос 1), 3 и т.д. пока не встретим 1 без переноса. Именно это, по идее, и должна делать ваша программа. Но что вы там такое творите в своем коде - навскидку не ясно. И зачем вам понадобились степени двойки?
--- А "в лоб" я бы решал эту задачу так: По условию мы ищем числа, a , для которых выполняетсяБудем делать перебор по количеству цифр в a , то есть по То есть нас интересуют числа вида , которые делятся на 19. Попробуем поискать такие числа в диапазоне unsigned long long
10526315789473684 . Ответ задачи: 105263157894736842 .--- А если поискать подальше
Код
10526315789473684 10526315789473684210526315789473684 10526315789473684210526315789473684210526315789473684 10526315789473684210526315789473684210526315789473684210526315789473684 10526315789473684210526315789473684210526315789473684210526315789473684210526315789473684
0
|
0 / 0 / 0
Регистрация: 25.09.2022
Сообщений: 36
|
||||||
25.09.2022, 22:58 [ТС] | 17 | |||||
По степеням двойки - достаточно логичное решение. Т.к. известна последняя цифра числа - 2, переставив ее, число удвоили, значит, предпоследняя цифра 4 (2*2), перед ней 8 (4*2), 6 (8*2), 3 (6*2 + 1 от умножения 8*2) и т.д.
0
|
Вездепух
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,062
|
|
25.09.2022, 23:36 | 18 |
3? 6? Это степени двойки?
Ничего не понимаю. Что это за цикл в цикле? В чем смысл внешнего цикла? Где в коде используются эти "степени двойки"? Первая же итерация внешнего цикла заканчивается return 0; . Зачем он нужен тогда?Переменная q всегда равна 0, то есть программа ничего не выводит.Вы что-то выдумываете.
0
|
0 / 0 / 0
Регистрация: 25.09.2022
Сообщений: 36
|
|
25.09.2022, 23:48 [ТС] | 19 |
Вы не читаете то, что я пишу. 3 и 6 - части выводимого ответа, а не степени двойки. А получаются они как раз посредством работы со степенями. Попробуйте решить это вручную и самостоятельно понять принцип умножения на 2 в данном случае, если не очевидно, почему это происходит. Задача не новая, можете ее погуглить и почитать иные рассуждения на ее счет.
0
|
Вездепух
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,062
|
|
26.09.2022, 02:21 | 20 |
Я уже детально описал "принцип умножения на 2 в данном случае" выше. Он же - "принцип" сложения числа с самим собой. И я по прежнему в упор не вижу, при чем здесь "степени двойки".
И еще раз: в вашем изначальном коде за "степени двойки" отвечало некое arr[i] = a0 << i; и это еще вроде как-то участвовало в вычислениях (если мне не показалось).В вашем новом коде от "степеней двойки" осталось только некое a[i] = a[i - 1] * 2; , которое никому не нужно и в вычислениях никак не участвует, т.е. является мертвым кодом внутри никому не нужного внешнего цикла. Потому и возникает вопрос: зачем здесь все это?
0
|
26.09.2022, 02:21 | |
26.09.2022, 02:21 | |
Помогаю со студенческими работами здесь
20
Два массива, перебор значений по условию в цикле Выводится результат, не дождавшись завершения работы массива Результат выводится в поле но не выводится в span Почему itog не выводится (нужный код в незаккоментированной части) Перебор в цикле while Перебор в цикле Не выходит нужный результат примера Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |