Как найти разряды чисел в паскале

Перейти к содержанию

Определить количество разрядов числа

Просмотров 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 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

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

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
uses crt;
var n,m: longint;
    k: byte;
 
begin
repeat
write('n='); readln(n);
k:=0;
m:=n;
if n=0 then k:=1;
m:=abs(m);
   while m>=1 do
         begin
         inc(k);
         m:=m div 10;
         end;
writeln('Разрядность ',k);
until n=0;
readln;
end.

и … левнивый вариант =)

Pascal
1
2
3
4
5
6
7
8
9
10
11
uses crt;
var s: string;
 
begin
repeat
write('n='); readln(s);
if s[1]='-' then delete(s,1,1);
writeln('Разрядность ',length(s));
until s='0';
readln;
end.



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. Дано натуральное число N. Определить, является ли оно простым. Натуральное число N называется простым, если оно делится нацело без остатка только на единицу и N. Число 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. Определить количество простых чисел в интервале от N до M, где N и M — натуральные числа, причем N le M.

Алгоритм решения данной задачи представлен на рис. 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. Определить количество цифр в числе.

Входные данные: N — целое число.

Выходные данные: kol — количество цифр в числе.

Промежуточные данные: M — переменная для временного хранения значения N.

Для того чтобы подсчитать количество цифр в числе, необходимо определить, сколько раз заданное число можно разделить на десять нацело. Например, пусть N=12345, тогда количество цифр kol = 5. Результаты вычислений сведены в таблицу 3.8. Алгоритм определения количества цифр в числе представлен на рис. 3.35.

Таблица
3.8.
Определение количества цифр числа

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. Дано натуральное число N. Определить, содержит ли это число нули и в каких разрядах они расположены (например, число 1 101 111 011 содержит ноль в третьем и восьмом разрядах).

Входные данные: N — целое число.

Выходные данные: pos — позиция цифры в числе.

Промежуточные данные: i — параметр цикла, M — переменная для временного хранения значения N.

В связи с тем, что разряды в числе выделяются, начиная с последнего, то для определения номера разряда в числе, необходимо знать количество цифр в
числе1212Алгоритм нахождения количества цифр в числе был рассмотрен в предыдущей задаче.. Таким образом, на первом этапе решения задачи необходимо определить kol — количество цифр в числе. Затем начинаем выделять из числа цифры; если очередная цифра равна нулю, нужно вывести на экран номер разряда, который занимает эта цифра. Процесс определения текущей цифры числа N=120405 представлен в таблице 3.9.

Блок-схема алгоритма решения данной задачи показана на рис. 3.36.

Алгоритм решения задачи 3.17

Рис.
3.36.
Алгоритм решения задачи 3.17

Таблица
3.9.
Определение текущей цифры числа

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.

Добавить комментарий