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