Вопрос Помогите закончить программку ПАСКАЛЬ МНОЖЕСТВА

Регистрация
18 Июн 2013
Сообщения
70
Репутация
0
Спасибо
0
Монет
0
Дана строка. Вывести на экран цифры, которые повторяются ровно 3 раза.





Program P1;

var s:string;

i:integer;

Cifr,Cstr: set of char;



begin

Cifr:=['1'..'9'];

Write('s = '); Readln(s);

For i:=1 to Length(s) do

if s in Cifr then Cstr:=Cstr+[s];



write(Cstr);

end.



Здесь я из строки выбираю только цифры, а как сделать так, чтобы выводило цифры которые повторяются 3 раза?
 
Требование использовать множества это чья-то прихоть или сойдут массивы? Дело в том, что множества не хранят дубликаты. Т. е. некое множество натуральных чисел не может содержать несколько одинаковых элементов. Поэтому, массив в сочетании с множеством (если очень надо). Короче, вот так

const
Cifr = ['1'..'9'];
var
A : array[0..9] of Integer;
i : Integer;
s : String;
begin
Write('s = '); Readln(s);
For i:=1 to Length(s) do
if s in Cifr then Inc(A[Ord(s)-48]);
for i:= 0 to 9 do WriteLn(i, ' ', A);
// все, массив А содержит количество каждой цифры в строке для соответствующего индекса. Остается найти элементы равные трем и вывести их индексы. Т. е. элемент А [9] будет содержать количество девяток в строке

end.
 
6638036_8e188bd38b6a8e5c064a06c9e49f730c_800.png

 
Ну прежде всего, вам надо сменить тип у Cstr
т. к. set of char - множество, а элементы множества в Pascal нельзя вводить и выводить, а также в множестве не может быть повторяющихся элементов - фактически вы полностью аннулируете проделанную ранее работу.
Cstr должен быть массивом символов.

Потом можно просто сделать цикл for внутри другого цикла for, и проходить по созданному массиву считая каких элементов сколько.
 
Назад
Сверху