Перейти к содержанию
Определить количество разрядов числа
Просмотров 12.9к. Обновлено 15 октября 2021
Написать функцию, которая определяет количество разрядов введенного целого числа.
Чтобы программно посчитать количество разрядов числа, необходимо последовательно его делить нацело на 10, пока это число не станет равным нулю. При этом считать количество делений. Например, дано число 345. После первого деления останется 34, после второго — 3, после третьего — 0. Таким образом, мы видим, что количество делений равно количеству разрядов числа.
Для реализации данного алгоритма следует использовать цикл «пока» (while). Условием его выполнения является неравенство числа нулю. Хотя, если вводятся только положительные числа или перед этим отрицательное число превращают в положительное, в условии может быть «больше нуля».
Перед циклом вводится переменная-счетчик (например, i), которой присваивается значение 0 и которая при каждом делении заданного числа внутри цикла увеличивается на единицу. После завершения деления именно ее значением будет определяться количество разрядов числа.
Поскольку надо написать функцию, то скорее всего эта функция должна принимать заданное число, а возвращать количество разрядов.
Pascal
var num: longint;function digits (n:longint): byte;
var i: byte;
begin
i := 0;
while n > 0 do begin
n := n div 10;
i := i + 1
end;
digits := i
end;begin
write ('Введите число: ');
readln (num);
if num<0 then num:=abs(num);
writeln ('Количество разрядов = ', digits(num));
end.
Введите число: -98
Количество разрядов = 2
Язык Си
#include < stdio.h>
int digits (int);main() {
int num;
scanf("%d",&num);
printf("%dn", digits(num));
}int digits(int n) {
int i;
if (n < 0) n = -n;
while (n > 0) {
n = n/10;
i += 1;
}
return i;
}
3543
4
Python
количество разрядов в числе Python
def digits(n):
i = 0
while n > 0:
n = n//10
i += 1
return inum = abs(int(input('Введите число: ')))
print('Количество разрядов:', digits(num))
Введите число: 65098234
Количество разрядов: 8
КуМир
алг колич_разрядов
нач
цел num
ввод num
вывод разряды(num)
коналг цел разряды(цел n)
нач
цел i, m
m := n
i := 0
если m < 0 то m := -m всё
нц пока m > 0
m := div(m,10)
i := i+1
кц
знач := i
кон
-562
3
Basic-256
input num
gosub digits
enddigits:
if num < 0 then num = abs(num)
i = 0
while num > 0
num = num 10
i = i + 1
endwhile
print i
return
-7823342
7
0 / 0 / 0 Регистрация: 07.05.2013 Сообщений: 4 |
|
1 |
|
Определить разрядность числа08.05.2013, 06:35. Показов 8874. Ответов 5
написать программу, которая вводит с клавиатуры число и определят его разность. При вводе числа 0 выход из программы
0 |
20 / 15 / 14 Регистрация: 05.12.2010 Сообщений: 256 Записей в блоге: 1 |
|
08.05.2013, 06:37 |
2 |
Подробнее нельзя описать программу? В смысле разность числа? Если я ввел 1, то что я вычитать буду?
0 |
0 / 0 / 0 Регистрация: 07.05.2013 Сообщений: 4 |
|
08.05.2013, 06:44 [ТС] |
3 |
ой извеняюсь, не разность разрядность
0 |
43 / 43 / 43 Регистрация: 07.05.2013 Сообщений: 109 |
|
08.05.2013, 10:50 |
4 |
а границы вводимых чисел?
0 |
20 / 15 / 14 Регистрация: 05.12.2010 Сообщений: 256 Записей в блоге: 1 |
|
08.05.2013, 11:37 |
5 |
диапазон чисел напишите сколько разрядов максимум?
0 |
КонецСвета Почетный модератор 7966 / 3937 / 2464 Регистрация: 30.10.2011 Сообщений: 5,377 |
||||||||
08.05.2013, 13:47 |
6 |
|||||||
и … левнивый вариант =)
1 |
Оглавление:
- 1 Задача — Определить количество разрядов числа
— программирование на Pascal, Си, Кумир, Basic-256, Python- 1.1 Pascal
- 1.2 Язык Си
- 1.3 Python
- 1.4 КуМир
- 1.5 Basic-256
Задача — Определить количество разрядов числа
— программирование на Pascal, Си, Кумир, Basic-256, Python
Написать функцию, которая определяет количество разрядов введенного целого числа.
Чтобы программно посчитать количество разрядов числа, необходимо последовательно его делить нацело на 10, пока это число не станет равным нулю. При этом считать количество делений. Например, дано число 345. После первого деления останется 34, после второго — 3, после третьего — 0. Таким образом, мы видим, что количество делений равно количеству разрядов числа.
Для реализации данного алгоритма следует использовать цикл «пока» (while). Условием его выполнения является неравенство числа нулю. Хотя, если вводятся только положительные числа или перед этим отрицательное число превращают в положительное, в условии может быть «больше нуля».
Перед циклом вводится переменная-счетчик (например, i), которой присваивается значение 0 и которая при каждом делении заданного числа внутри цикла увеличивается на единицу. После завершения деления именно ее значением будет определяться количество разрядов числа.
Поскольку надо написать функцию, то скорее всего эта функция должна принимать заданное число, а возвращать количество разрядов.
Pascal
var num: longint;
function digits (n:longint): byte;
var i: byte;
begin
i := 0;
while n > 0 do begin
n := n div 10;
i := i + 1
end;
digits := i
end;
begin
write (‘Введите число: ‘);
readln (num);
if num<0 then num:=abs(num);
writeln (‘Количество разрядов = ‘, digits(num));
end. Введите число: -98
Количество разрядов = 2
Язык Си
#include <stdio.h>
int digits (int);
main() {
int num;
scanf(«%d»,&num);
printf(«%dn», digits(num));
}
int digits(int n) {
int i;
if (n < 0) n = -n;
while (n > 0) {
n = n/10;
i += 1;
}
return i;
} 3543
4
Python
def digits(n):
i = 0
while n > 0:
n = n//10
i += 1
return i
num = abs(int(input(‘Введите число: ‘)))
print(‘Количество разрядов:’, digits(num)) Введите число: 65098234
Количество разрядов: 8
КуМир
алг колич_разрядов
нач
цел num
ввод num
вывод разряды(num)
кон
алг цел разряды(цел n)
нач
цел i, m
m := n
i := 0
если m < 0 то m := -m всё
нц пока m > 0
m := div(m,10)
i := i+1
кц
знач := i
кон -562
3
Basic-256
input num
gosub digits
end
digits:
if num < 0 then num = abs(num)
i = 0
while num > 0
num = num 10
i = i + 1
endwhile
print i
return -7823342
7
Did you find apk for android? You can find new Free Android Games and apps.
Формулировка задачи:
Нужно создать программу для того, чтобы работала по схеме: ввести число, вывести на экран количество разрядов этого числа и сумму цифр этого числа.
Код к задаче: «Ввести число, вывести на экран количество разрядов этого числа и сумму цифр этого числа.»
textual
readln(n); s:=0;k:=0; while n>0 do begin s:=s+n mod 10; k:=k+1; n:=n div 10; end; write('Количество разрядов=',k,' сумма цифр=',s);
Полезно ли:
10 голосов , оценка 4.000 из 5
ЗАДАЧА 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). Проверка остальных делителей не имеет смысла, аварийно покидаем цикл.
В алгоритме предусмотрено два выхода из цикла. Первый — естественный, при исчерпании всех значений параметра, а второй — досрочный. После выхода из цикла надо проверить значение 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<M); k : = 0; {Количество простых чисел.} for i :=N to M do {Параметр i принимает значения от N до M.} begin {Определение простого числа.} Pr:= true; for j :=2 to i div 2 do if i mod j = 0 then begin Pr:= false; break; end; {Если число простое, увеличиваем количество на 1.} if Pr then k:=k+1; end; if k=0 then writeln ( ’Простых чисел в диапазоне нет ’ ) else writeln ( ’Простых чисел в диапазоне ’, k ); end.
ЗАДАЧА 3.16. Дано натуральное число . Определить количество цифр в числе.
Входные данные: N — целое число.
Выходные данные: kol — количество цифр в числе.
Промежуточные данные: M — переменная для временного хранения значения N.
Для того чтобы подсчитать количество цифр в числе, необходимо определить, сколько раз заданное число можно разделить на десять нацело. Например, пусть N=12345, тогда количество цифр kol = 5. Результаты вычислений сведены в таблицу 3.8. Алгоритм определения количества цифр в числе представлен на рис. 3.35.
kol | N |
---|---|
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; {Сохранить значение переменной N. } kol : = 1; {Пусть число состоит из одной цифры.} while M div 10 > 0 do {Выполнять тело цикла, пока число делится нацело на 10.} begin kol := kol +1; {Счётчик количества цифр.} M:=M div 1 0; {Изменение числа.} end; writeln ( ’ kol= ’, kol ); end.
ЗАДАЧА 3.17. Дано натуральное число . Определить, содержит ли это число нули и в каких разрядах они расположены (например, число 1 101 111 011 содержит ноль в третьем и восьмом разрядах).
Входные данные: N — целое число.
Выходные данные: pos — позиция цифры в числе.
Промежуточные данные: i — параметр цикла, M — переменная для временного хранения значения N.
В связи с тем, что разряды в числе выделяются, начиная с последнего, то для определения номера разряда в числе, необходимо знать количество цифр в
числе1212Алгоритм нахождения количества цифр в числе был рассмотрен в предыдущей задаче.. Таким образом, на первом этапе решения задачи необходимо определить kol — количество цифр в числе. Затем начинаем выделять из числа цифры; если очередная цифра равна нулю, нужно вывести на экран номер разряда, который занимает эта цифра. Процесс определения текущей цифры числа N=120405 представлен в таблице 3.9.
Блок-схема алгоритма решения данной задачи показана на рис. 3.36.
Рис.
3.36.
Алгоритм решения задачи 3.17
i | Число М | Цифра | Номер позиции |
---|---|---|---|
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; {Сохранить значение переменной N.} kol : = 1; {Пусть число состоит из одной цифры.} while M div 10 > 0 do {Выполнять тело цикла, пока число делится нацело на 10.} 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.