: 7
Программа на Си определить количество цифр
Дано натуральное число 3456786 определить количество его цифр кратных d=2(задается в программе).
Белик Виталий 🙂
: 57,792
http://www.programmersforum.ru/showthread.php?t=104462
Годится для начала?
I’m learning to live.
: 7
#include #include int schet(int n) < int count = 1; while ( n = n / 10 ) count++; return count; >int main()
Какую строчку изменить чтобы считало количество цифр кратных d=2?
: 7
http://www.programmersforum.ru/showthread.php?t=104462
Годится для начала?
Спасибо большое, разобралась!
Участник клуба
: 1,849
#include int main() < int n,z,count=0; scanf(«%d %d»,z); while (n!=0) < count+= (((n % 10) % z) == 0) ; n /= 10; >printf(«n%d»,count); return 0; >
на этом тесте проверил только)
from dark to light)
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Определить количество цифр и малых латинских букв в строке | Waise | Помощь студентам | 1 | 22.04.2015 19:18 |
В С++ определить количество цифр в числе, являющихся квадратами некоторого числа | mmf_Valya | Помощь студентам | 1 | 20.10.2012 19:13 |
Определить, какое количество цифр числа надо исправить, чтобы исправленное совпадало с обращенным к заданному числу M | Krusad | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 08.10.2012 12:54 |
Определить: количество цифр в тексте | irek01 | Visual C++ | 3 | 26.05.2012 18:17 |
Pascal.Определить к-количество трехзначных натуральных чисел,сумма цифр которых n (n=13). | naty7773 | Помощь студентам | 2 | 11.01.2012 16:43 |
Нахождение кол-ва цифр в числе С++
Источник: www.programmersforum.ru
Как узнать из скольки цифр состоит число (без перевода в строку )?
Как узнать из скольки цифр состоит число на пример 456 ?
Да можно перевести в строку и там уже узнать с помощью len() и тд..
А как сделать без перевода в строку?
- Вопрос задан более двух лет назад
- 289 просмотров
1 комментарий
7.5 Одинаковые цифры «Поколение Python»: курс для начинающих. Курс Stepik
Простой 1 комментарий
Учти, что решение через математику будут медленнее (как ни странно), чем через строку, особенно если число длинное.
Решения вопроса 2
Senior Developer
По идее через десятичный логарифм можно:
x = 456
n = int(math.log10(x)) + 1
print(n)
Ответ написан более двух лет назад
Комментировать
Нравится 2 Комментировать
Учу python, sql
с ходу в голову приходит только:
num = 456
counter = 0
while num > 0:
num //= 10
counter += 1
print(counter)
Ответ написан более двух лет назад
Нравится 1 13 комментариев
Первый раз вижу знак // , что он делает?
kaktak255, целочисленное деление
Теперь ответ из категории дебильных. Вы слышали про цикл for?
Yupiter7575, а что в данном случае им перебирать?
Даниил Шевкунов, Может быть строку данную в условии? Тем более ваше решение не будет работать с отрицательными числами и дробями. А там где будет работать, будет медленно, потому что while
Даниил Шевкунов, Ну вот как пример:
>>> def getCol(num): . return [i for i, val in enumerate(str(num).replace(‘.’, »).replace(‘-‘, »))][-1] + 1 . >>> getCol(-123) 3 >>> getCol(123) 3 >>> getCol(12.3434) 6
Yupiter7575, это всё равно преобразования числа в строку, и последующее использование уже не числа а строки.
kaktak255, ну а вообще, все числа можно расписать по типу:
456.12 = 4*10^2 + 5*10^1 + 6*10^0 + 1*10^-1 + 2*10^-2
От этой логики исходя, и искать нужное значение.
Если же число в минус, то использовать модуль, к примеру
a = -52 print(a.__abs__())
MinTnt, Если говорить по факту, то моя функция выполняет все требования и исходное число в строку не преобразует. Да в цикле есть функция str, но она просто представляет введенное число в строку для цикла, и не изменяет тип какой либо переменной
говорить по факту
Есть факт использования str(), далее через enumerate мы просто проходим по строке как по списку, делая дополнительно нумерацию, и выбирая последний элемент.
Но опять же, это преобразование в строку, что нарушает условие вопроса. Да и при этом, раз уже преобразовали в строку, использование цикла лишь делает лишнюю нагрузку.
MinTnt, Я все равно не понимаю одной вещи, зачем автор вопроса не хочет использовать str? Если он вставит эту функцию куда нибудь в func.py, а потом импортирует, то str он не заметит. Функция будет принимать число и возвращать число.
А если нужно без нагрузки — len(str(num))
Yupiter7575, С этим согласен. Так как после преобразования в строку, её длину по-символьно посчитать проще, да и быстрее чем различные иные попытки циклами.
Но этот вопрос скорее из ряда «Алгоритмы». Т.е. Вопрос скорее в том, какие есть математические алгоритмы, чтоб узнать сколько у него цифр.
Мне кажется не стоит, особенно новичкам, советовать выполнять «магические» методы. Для получения значения данного метода существует функция abs() :
a = -52 print(abs(a))
Ответы на вопрос 1
Python программист
Ну правда, вопрос из категории дебильных. В пайтоне дин. типизация, и вам еще лень переводить число в строку?
a = 1234 a_lenght = len(str(a))
Ответ написан более двух лет назад
Потому что интересны и другие варианты решения
Я умею решать элементарную задачу
Решать более сложные задачи я не хочу
Я хочу делать элементарную задачу через жопу
Есть задача, наверное автору виднее, почему он хочет именно такое решение.
Сергей Шиловский, и? Вам то какое дело? Автор вопроса пришел на тостер, чтобы получить помощь и знания. Я дал автору знание о том как лучше решить эту задачу.
Yupiter7575, вы не думали что ваш ответ слишком очевиден, чтобы автор о нём не знал, если даже в заголовке вопроса есть жирнющий намёк на это?
Сергей Шиловский, Прочитайте внимательно ответ, потом пишите
Yupiter7575, может я слепой, но ваш ответ прямо в вопросе есть:
Да можно перевести в строку и там уже узнать с помощью len() и тд..
Сергей Шиловский, С чем вы хотите спорить? Вопрос написал самоучка, который посмотрел один видос в интернете и начал здесь выпендриваться на тему «Как лучше сделать, если мне так не нравится». Если вам тоже нравится писать говнокод — пожалуйста ваше решение. Я предложил самый оптимальный и удобный вариант, если автору он не подходит — сверху есть еще решения.
Источник: qna.habr.com
Операторы управления
ЗАДАЧА 3.14. Дано натуральное число . Определить, является ли оно простым. Натуральное число
называется простым, если оно делится нацело без остатка только на единицу и
. Число 13 — простое, так как делится только на 1 и 13, N = 12 не является простым, так как делится на 1, 2, 3, 4, 6 и 12.
Входные данные: N — целое число.
Выходные данные: сообщение.
Промежуточные данные: i — параметр цикла, возможные делители числа N .
Алгоритм решения этой задачи (рис. 3.33) заключается в том, что необходимо определить, есть ли у числа N делители среди чисел от 2 до N/2 . Если делителей нет — число простое. Предположим, что число N является простым ( Pr:=true ). Организуем цикл, в котором переменная i будет изменяться от 2 до N/2 . В цикле будем проверять, делится ли N на i . Если делится, то мы нашли делитель, N не является простым ( Pr:=false ). Проверка остальных делителей не имеет смысла, аварийно покидаем цикл.
увеличить изображение
Рис. 3.33. Алгоритм определения простого числа
В алгоритме предусмотрено два выхода из цикла. Первый — естественный, при исчерпании всех значений параметра, а второй — досрочный. После выхода из цикла надо проверить значение Pr . Если Pr=true , то число N — простое, иначе N не является простым числом.
При составлении программы на языке Free Pascal досрочный выход из цикла удобно выполнять при помощи оператора break :
var N, i : integer; Pr : boolean; begin write ( ’N= ’ ); readln (N); Pr:= true; for i :=2 to N div 2 do if N mod i = 0 then begin Pr:= false; break; end; if Pr then writeln ( ’Число ’,N, ’ — простое ’ ) else writeln ( ’Число ’,N, ’ простым не является ’ ); end.
ЗАДАЧА 3.15. Определить количество простых чисел в интервале от до
, где
и
— натуральные числа, причем
.
Алгоритм решения данной задачи представлен на рис. 3.34.
Обратите внимание, что здесь осуществляется проверка корректности ввода исходных данных. Если границы интервала не положительны, или значение N превышает M , ввод данных повторяется в цикле с постусловием до тех пор, пока не будут введены корректные исходные данные. Далее для каждого числа из указанного интервала (параметр i принимает значения от N до M ) происходит проверка. Если число является простым, то переменная k увеличивается на единицу. Подробно определение простого числа описано в задаче 3.14.
Программа на языке Free Pascal, реализующая алгоритм подсчёта количества простых чисел в заданном диапазоне:
var N,M, i, j, k : longint; Pr : boolean; begin repeat write ( ’N= ’ ); readln (N); write ( ’M= ’ ); readln (M); until (N>0) and (M>0) and (N for i :=N to M do begin Pr:= true; for j :=2 to i div 2 do if i mod j = 0 then begin Pr:= false; break; end; if Pr then k:=k+1; end; if k=0 then writeln ( ’Простых чисел в диапазоне нет ’ ) else writeln ( ’Простых чисел в диапазоне ’, k ); end.
увеличить изображение
Рис. 3.34. Алгоритм определения простых чисел в заданном интервале
ЗАДАЧА 3.16. Дано натуральное число . Определить количество цифр в числе.
Входные данные: N — целое число.
Выходные данные: kol — количество цифр в числе.
Промежуточные данные: M — переменная для временного хранения значения N .
Для того чтобы подсчитать количество цифр в числе, необходимо определить, сколько раз заданное число можно разделить на десять нацело. Например, пусть N=12345 , тогда количество цифр kol = 5 . Результаты вычислений сведены в таблицу 3.8. Алгоритм определения количества цифр в числе представлен на рис. 3.35.
1 | 12345 |
2 | 12345 div 10=1234 |
3 | 1234 div 10=123 |
4 | 123 div 10=12 |
5 | 12 div 10=1 |
1 div 10=0 |
Текст программы, реализующей данную задачу, можно записать так:
var M,N: longint; kol : word; begin repeat write ( ’N= ’ ); readln (N); until N>0; M:=N; kol : = 1; while M div 10 > 0 do begin kol := kol +1; M:=M div 1 0; end; writeln ( ’ kol= ’, kol ); end.
увеличить изображение
Рис. 3.35. Алгоритм определения количества цифр в числе
ЗАДАЧА 3.17. Дано натуральное число . Определить, содержит ли это число нули и в каких разрядах они расположены (например, число 1 101 111 011 содержит ноль в третьем и восьмом разрядах).
Входные данные: N — целое число.
Выходные данные: pos — позиция цифры в числе.
Промежуточные данные: i — параметр цикла, M — переменная для временного хранения значения N .
В связи с тем, что разряды в числе выделяются, начиная с последнего, то для определения номера разряда в числе, необходимо знать количество цифр в числе12 12 Алгоритм нахождения количества цифр в числе был рассмотрен в предыдущей задаче. . Таким образом, на первом этапе решения задачи необходимо определить kol — количество цифр в числе. Затем начинаем выделять из числа цифры; если очередная цифра равна нулю, нужно вывести на экран номер разряда, который занимает эта цифра. Процесс определения текущей цифры числа N=120405 представлен в таблице 3.9.
Блок-схема алгоритма решения данной задачи показана на рис. 3.36.
Рис. 3.36. Алгоритм решения задачи 3.17
1 | 120405 div 10=12040 | 120405 mod 10=5 | 6 |
2 | 12040 div 10=1204 | 12040 mod 10=0 | 5 |
3 | 1204 div 10=120 | 1204 mod 10=4 | 4 |
4 | 120 div 10=12 | 120 mod 10=0 | 3 |
5 | 12 div 10=1 | 12 mod 10=2 | 2 |
6 | 1 div 10=0 | 1 mod 10=1 | 1 |
Текст программы, реализующей данный алгоритм:
var M,N: longint; i, pos, kol : word; begin repeat write ( ’N= ’ ); readln (N); until N>0; //Определение kol — количества разрядов. M:=N; kol : = 1; while M div 10 > 0 do begin kol := kol +1; M:=M div 1 0; end; writeln ( ’ kol= ’, kol ); M:=N; pos : = 0; for i :=1 to kol do begin if (M mod 10 = 0) then begin pos := kol-i +1; writeln ( ’Ноль в ’, pos, ’м- разряде. ’ ); end; M:=M div 1 0; end; if pos=0 then writeln ( ’Число не содержит цифру 0. ’ ); end.
Источник: intuit.ru