Консультация № 198000
19.03.2020, 21:35
0.00 руб.
0 4 1
Здравствуйте! Мне кажется, что в данной задаче ответ всегда равен 0, потому что если число кратно 3, то в троичной системе оно оканчивается нулём. Правильно ли я думаю?

Дан массив, содержащий 160 положительных целых чисел, не
превышающих 20 000. Необходимо найти в этом массиве количество
элементов, которые кратны 3, или их троичная запись заканчивается
цифрой 1, и заменить каждый из таких элементов на это количество.
Напишите программу для решения этой задачи. В качестве результата
программа должна вывести изменённый массив, по одному элементу в
строке.

Обсуждение

давно
Модератор
137394
1850
19.03.2020, 23:22
общий
19.03.2020, 23:27
Имхо, если Вы точно воспроизвели условие задачи, то в условии написано [u][b]или[/b][/u], а из случайного набора чисел от 0 до 20000 возможно найдутся числа, кратные 3.
В каком виде должна быть предоставлена прграмма?
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Посетитель
402982
1
19.03.2020, 23:49
общий
Адресаты:
Ах, да вы правы. Я просто несколько раз перечитывал условие и мне казалось, что вместо "или" написано "а". Спасибо!
в сети
Управляющий
143894
2148
20.03.2020, 14:07
общий
20.03.2020, 14:07
Адресаты:
Цитата: borzen32
потому что если число кратно 3, то в троичной системе оно оканчивается нулём. Правильно ли я думаю?

Нет нет правильно.
Да, в троичной системе число кратное 3 оканчивается на ноль, это так. Но задача требует подсчитать количество таких чисел, а оно будет ну ни как не равное нулю.
Об авторе:
Устав – есть устав! Если ты устав – то отдыхай!


давно
Модератор
137394
1850
20.03.2020, 15:01
общий
это ответ
Здравствуйте, borzen32!
Необходимо найти в этом массиве количество элементов, которые кратны 3
По видимому, в десятичной системе (и не только, но нам выгодно рассуждать с точки зрения десятичной системы) это означает, что остаток от деления числа нацело на 3 равен 0.
или их троичная запись заканчиваетсяцифрой 1
По видимому, в десятичной системе (и не только, но нам выгодно рассуждать с точки зрения десятичной системы) это означает, что остаток от деления числа нацело на 3 равен 1. И смысла преобразовывать каждый элемент массива в троичную запись нет никакого.
Напишите программу для решения этой задачи.
Так как Вы не описали, как это должно быть реализовано, опишу алгоритм, как я его себе представляю.
1. Заполнить массив случайными целыми числами от 0 до 20000. Во многих языках для этого есть функция.
2. Организовать счетчик изменённых элементов. Начальное значение =0
3. Просмотреть получившийся массив, вычисляя остаток от деления каждого элемента на 3.
Если остаток от деления равен 0 или 1, заменить этот элемент в массиве нулём, например. При этом увеличить на единицу значение счетчика.
4. Просмотреть еще раз массив. Элементы, равные 0, заменить на значение полученного счетчика.
5. Вывести результат.
ИМХО, мне не нравится постановка задачи. Я бы предложил перед манипуляциями скопировать исходный массив в другой. Уже этот другой массив преобразовывать, при выводе результата в строчку выводил бы попарно значения элементов исходного и изменённого массивов. Для меня исходные данные неприкасаемы.

Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Форма ответа