Напишите программу которая запрашивает на вход натуральное число и определяет, сколько раз в его записи встречается цифра 3. P.s Похожая программа была для единицы, но я не понимаю, как преобразовать ее для 3. Объясните пожалуйста алгоритм. Спасибо

Ответы

Ответ дал: MrSolution
2

Программа:

(см. прикрепленный файл)

Приложения:

BobbyFresnel: Длинновато ))))
LRSM: А как же на счёт "Объясните пожалуйста алгоритм"? И что это за прикол с input? Ладно ещё на count c output можно хоть и со скрипом, но закрыть глаза, но зачем в m_count городить огород с if then begin exit end? Ну как можно знать split и при этом не знать о существовании "волшебного" else? Ого, так ещё и .Println при всём при этом используется??! Ну это уже смешно тогда как-то получается...
Jurin: Cпасибо. Все работает. А как это будет выглядить для Python? Cпасибо
LRSM: n = int(input("Введите натуральное число: "))
print("Результат:", str(n).count("3"))

или можно для любой строки, необязательно числа:
print("Результат:", input().count("3"))
MrSolution: LRSM, count принимается без скрипа. Это правильная четкая логика и оптимальное решение задачи на уровне ученика школы. Смешного ничего нет. Решение такое, какое оно есть специально. Приведено грамотное решение задачи (функция count). Однако, если человек хочет списать, то получит от учителя 2, а если разобраться (а Jurin именно этого и хочет), то поймет, что ему нужно брать. Else знаю, не волнуйтесь за меня. Input и output добавил просто так. Мне захотелось.
MrSolution: Сначала думал проверку на корректность ввода написать, но потом стало лень. Поэтому не ищите там глубокого смысла. Ваше решение на python получит, если не 0, то мало баллов, так как не показывает проверяющему то, что вы понимаете, как реализована идея. Именно поэтому, кстати, на ЕГЭ очень не любят питон.
LRSM: Использование Println и Split явно указывает на PascalABC.NET, однако вместо того, чтобы написать грамотное решение на нём, Вы начинаете лепить туда лишний "хлам": создаёте ненужную процедуру input (ну ок, от балды захотелось), в ней создаёте лишнюю переменную (ну ок, захотелось растянуть код и его компиляцию); знаете exit - молодцы, но в m_count это в ущерб читабельности. В итоге у Вас получилась программа написанная ни на том, ни на сём: то ли PascalABC.NET, то ли Turbo/Free/Delphi/... .
LRSM: Если собрались написать решение на Turbo/Free/Delphi - пожалуйста, убирайте .Println и др., к count нареканий нет. Если всё же решили писать на PascalABC.NET, но считаете, что решение BobbyFresnel не для школьников - пожалуйста, вот один из множества альтернатив (и да, в школах, где изучают PascalABC.NET, это проходят):
begin
var (a, c) := (ReadInt64, 0);
foreach var i in a.ToString do
if i.ToDigit = 3 then c+=1;
write(c)
end.
LRSM: В проверке на корректность ввода ничего сложного нет - TryRead(n) и n>0.
BobbyFresnel: В школьных задачах тип и диапазоны изменения значений входных данных даются исключительно для того, чтобы решающий мог определиться с типом данных. Проверка вводимых значений на корректность не требуется, а на ЕГЭ даже может быть наказума, как снижающая эффективность решения.
Ответ дал: BobbyFresnel
2

// PascalABC.NET 3.6

begin

 ReadInt64('Введи натуральное число:').ToString.Count(c -> c = '3').Print

end.

Объяснение:

ReadInt64('Введи натуральное число:') - запрос ввода целого числа длиной до 19 цифр

.ToString - преобразование числа в строку символов

.Count(c -> c = '3') - подсчет символов '3' в строке

.Print - вывод результата

Приложения:

Аноним: Добрый день помогите пожалуйста с вот этим вот ссылка https://znanija.com/task/37794838 заранее благодарю это информатика
Вас заинтересует