mn - это множество чисел типа byte. В данном случае - это множество цифр исходного числа.
В 13 строке проверяется входит ли цифра k в множество mn. Если не входит, то добавляется. Этот if, как верно заметил sm, излишество.
В 17 строке проверяется входит ли число (цифра) k в множество mn. Если входит, то инкрементируется (увеличивается на 1) переменная sum.
Программа кривовато написана. Упростить можно:
program N54490696_mn;
var n:longInt;
mn:set of byte;
k,sum:byte;
begin
write('Введите число: '); readln(n);
mn:=[];
while n<>0 do begin
k:=n mod 10;
n:=n div 10;
mn:=mn+[k];
end;
sum:=0;
for k:=0 to 9 do inc(sum,ord(k in mn));
writeln('Кол-во невторяющихся цифр = ' ,sum);
readln;
end.
Можно без множества написать, с массивом, но будет подлиннее.
И не понятно чем вам не угодил inc? Это более элегантно, чем sum := sum +1;
program N54490696_mass;
var n:longInt;
mn:array [ 0 .. 9 ] of byte;
k,sum:byte;
begin
write('Введите число: '); readln(n);
for k := 0 to 9 do mn[k]:=0;
repeat
mn[n mod 10]:=1;
n:=n div 10;
until n=0;
sum:=0;
for k:=0 to 9 do sum:=sum+mn[k];
writeln('Кол-во невторяющихся цифр = ' ,sum);
readln;
end.
Другие языки программирования и технологии
Как упростить программу на паскале. Т.Е. без оператора "inc" и "if .. in .. then else ...;"-13 строка.
> if k in mn then else mn:=mn+[k];
Здесь if-проверка вообще не нужна
> if k in mn then inc(sum);
Заменить на
Sum := Sum + Byte(k in mn);
Здесь if-проверка вообще не нужна
> if k in mn then inc(sum);
Заменить на
Sum := Sum + Byte(k in mn);
mn:set of byte; - объявление структурированного типа МНОЖЕСТВО. mn - это множество.
IN - операция проверка принадлежности.
k in mn - проверяет принадлежность символа k множеству mn.
Результат этой проверки true, если k принадлежит множеству mn.
if k in mn then _____ else mn:=mn+[k]; Здесь пропущено что-то ______
if k in mn then inc(sum); Здесь считает сколько символов k имеется в множестве mn.
IN - операция проверка принадлежности.
k in mn - проверяет принадлежность символа k множеству mn.
Результат этой проверки true, если k принадлежит множеству mn.
if k in mn then _____ else mn:=mn+[k]; Здесь пропущено что-то ______
if k in mn then inc(sum); Здесь считает сколько символов k имеется в множестве mn.
СМ прав. Тут сначала формируется множество цифр, а затем подсчитывается количество цифр в этом множестве.
---
Новички-нулевички! Начинайте с этого:
"Песни о Паскале" - программирование для школьников и начинающих.
Погуглите в паутине, скачивается бесплатно.
---
Новички-нулевички! Начинайте с этого:
"Песни о Паскале" - программирование для школьников и начинающих.
Погуглите в паутине, скачивается бесплатно.
Похожие вопросы
- Как в с++ обозначить нажатия enter? Скопировал пример из учебника, но программа не завершается, т. е не выводит ничего.
- Слабо написать программу по старинке, т.е. единицами и нулями?=)))
- Оператор IF...Then...ELSE
- Помогите пожалуйста составить программу на Паскале, используя оператор case
- Программа на паскале! Помогите(бесплатно)
- Нужно написать программы в Паскале! Массивы! Срочно! Помогите!
- Нужно написать программу на паскале
- Написать программу в Паскале для построения графика функций. К программе желательно составить алгоритм.
- Программа в Паскале
- Напишите пожалуйста программу в паскале. Дана строка символов,определить количество слов,начинающихся с заданного символа