|
4 / 4 / 0 Регистрация: 08.11.2012 Сообщений: 106 |
|
|
1 |
|
Подсчитать количество цифр в числе14.11.2012, 23:59. Показов 88857. Ответов 1
Всем привет … 3.С клавиатуры вводится натуральное число N . Программе подсчитать количество цифр в числе . Буду очень благодарен …
0 |
|
Pahanuch 328 / 163 / 89 Регистрация: 03.11.2010 Сообщений: 920 |
||||
|
15.11.2012, 00:19 |
2 |
|||
|
Решение
3.С клавиатуры вводится натуральное число N . Программе подсчитать количество цифр в числе .
0 |
Исходник программы, которая находит количество цифр в числе, введённого пользователем с клавиатуры. Исходник основан на цикле WHILE. Есть пояснительные комментарии к каждой строке. Увидеть
исходный код
и скачать скомпилированный исходник вы можете ниже.
Исходный код программы для нахождения кол-ва цифр в числе:
Program kolcifr; //Название программы
var a, kol: integer; //Описание переменных
Begin //Начало программы
Writeln (‘Введите число’); //Диалог с пользователем
Readln (a); //Считывание числа
while a<>0 do begin //Вход в цикл while, пока а не равно 0
a:=a div 10; //Целочисленное деление на 10, отрезаем последнюю цифру
kol:=kol+1; //Считаем кол-во цифр
end; //Конец цикла
Writeln (‘Кол-во цифр: ‘,kol);//Вывод результата
end. //Конец программы
Скомпилированный исходник рекомендовано открывать программами PascalABC и PascalABC.Net.
Скачать исходник:
kolcifr.pas
Дата: 2012-03-11 08:59:25 Просмотров: 38899
Теги: Паскаль Pascal циклы WHILE исходник
Вычисляем сколько цифр в числе и суммируем их.
Вновь задачка и решение.
Задача звучит примерно так:
Составить программу, которая при вводе числа определит сумму (произведение, разность..) ее цифр (т.е. для суммы 123 => 1+2+3=6)
Для примера была данна задачка с использованием case of, где идут интервалы 1..9,10..99… — возможное кол-во цифр в числе. Занимает очень много места и мне она просто не понравилась.
В этот раз не искал возможных решений в интернете, а просто стал придумывать алгоритм.
Взял за основу возможность деления нацело (mod и div). Т.е. отсекаю каждый раз по цифре и проверяю ее. Заканчиваю вводную и представляю код.
Код ( опять без форматирования 
uses crt;
var
x:longint;
i,n:integer;
begin
clrscr;
write(‘x: ‘);
readln(x);
i:=0; n:=0;
while x<>0 do begin
i:=i+(x mod 10);
x:=x div 10;
n:=n+1;
end;
writeln(‘Cумма : ‘,i);
write(‘Кол-во цифр : ‘,n);
readln;
end.
Теперь через процедуру и немного изменим условия.
Надо посчитать все цифры в числе, кот-ые кратны 3.
Код:
uses crt;
var
x:longint;
procedure nums(x:longint);
var sum,count:integer;
begin
sum:=0; count:=0;
// начинаем цикл с проверкой числа, если число законичилось,т.е. = 0, то закончить
repeat
// здесь проверяем кратность цифры
if x mod 10 <>0 then if (a mod 10) mod 3 = 0
// подсчитываем кол-во цифр
then count:= count +1;
// далее от числа убираем цифру, которую проверяли выше
x:=x div 10;
until x=0;
writeln(‘Сумма : ‘,sum);
write(‘Кол-во цифр : ‘,count);
end;
begin
clrscr;
write(‘Введите число : ‘);
read(x);
nums(x);
readln;
end.
Посчитать общее количество определенных цифр в числах
Просмотров 13.7к. Обновлено 15 октября 2021
Посчитать, сколько раз встречается определенная цифра в введенной последовательности чисел. Количество вводимых чисел и цифра, которую необходимо посчитать, задаются вводом с клавиатуры.
- Запросить у пользователя количество вводимых чисел (n) и цифру для подсчета (d).
- Присвоить счетчику цифр значение 0.
- Выполнить n раз цикл, в теле которого
- запрашивать очередное число,
- пока это число не сократиться до нуля
- извлекать последнюю его цифру и сравнивать с цифрой, которую надо посчитать,
- увеличивать значение счетчика цифр на 1, если сравниваемые цифры совпадают,
- избавляться от последней цифры числа.
- В конце программы вывести количество посчитанных цифр на экран.
Pascal
количество цифр в числе паскаль
var
m: word;
n,d,i, count: byte;
begin
write('Количество чисел: ');
readln(n);
write('Цифра: ');
readln(d);
count := 0;
for i:=1 to n do begin
readln(m);
while m > 0 do begin
if m mod 10 = d then
count := count + 1;
m := m div 10;
end;
end;
writeln('Количество цифр: ', count);
end.
Количество чисел: 6
Цифра: 5
301
8952
155
306
200
541
Количество цифр: 4
Язык Си
#includemain () {
int n,d,m,count,i;
printf("Количество чисел: ");
scanf("%d", &n);
printf("Цифра: ");
scanf("%d", &d);
count = 0;
for(i=0;i< n;i++) {
scanf("%d", &m);
while (m>0) {
if (m%10 == d) count += 1;
m = m / 10;
}
}
printf("Количество цифр: %dn", count);
}
Количество чисел: 4
Цифра: 1
10500
1400
500
201
Количество цифр: 3
Python
количество цифр в числе python (питон)
n = int(input("Сколько будет чисел? "))
d = int(input("Какую цифру считать? "))
count = 0
for i in range(1,n+1):
m = int(input("Число " + str(i) + ": "))
while m > 0:
if m%10 == d:
count += 1
m = m // 10print("Было введено %d цифр %d" % (count, d))
Сколько будет чисел? 5
Какую цифру считать? 0
Число 1: 508
Число 2: 1024
Число 3: 300
Число 4: 10101
Число 5: 15
Было введено 6 цифр 0
КуМир
алг количество цифры
нач
цел m,n,d,i,count;
вывод "Количество чисел: "
ввод n
вывод "Цифра: "
ввод d
count := 0
нц для i от 1 до n
ввод m
нц пока m > 0
если mod(m,10) = d то
count := count + 1
все
m := div(m,10)
кц
кц
вывод "Количество цифр: ", count
кон
Количество чисел: 5
Цифра: 0
1099
8586
2300
15
10
Количество цифр: 4
Basic-256
input "Количество чисел: ", n
input "Цифра: ", d
c = 0
for i=1 to n
input m
while m > 0
if m%10 = d then c = c+1
m = m 10
endwhile
next i
print "Количество цифр: " + c
Количество чисел: 10
Цифра: 4
1234
11
1287
8945
200783
12
84
9600
544
244
Количество цифр: 7
ЗАДАЧА 3.14. Дано натуральное число 


Входные данные: 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. Дано натуральное число 
Входные данные: 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.

Сообщение было отмечено Памирыч как решение


