PDA

Просмотр полной версии : [Pascal] РАБОТА С МНОЖЕСТВЕННЫМИ ТИПАМИ ДАННЫХ


Fox_NICK
25.03.2010, 12:26
Дана непустая последовательность символов. Требуется построить и напечатать множество, элементами которого являются встречающиеся в последовательности: знаки препинания и операций отношения.


program hw5 ;

uses crt;

var

cur_symb,symb_of_end,j,y : char;
mn : set of char=['!'..'.'];
v_mnoj : set of char=['!'..'.'];

BEGIN
clrscr;
cur_symb:='!';
symb_of_end:='.';
mn:=[];


writeln('Введите символ указывающий на конец строки.');
readln(symb_of_end);

v_mnoj:=['!'..'.'];
writeln('Введите множество символов.');
while cur_symb<>symb_of_end do begin
read(cur_symb);
if cur_symb in v_mnoj then mn:=mn+[cur_symb];

end;
writeln('В множестве содержатся:');
writeln('знаки препинания:');
for j:='!' to '.' do
if j in mn then writeln(j);


END.


не работает( не подскажите в чем ошибка?

Soherox
25.03.2010, 17:10
Вот исправленная и подправленная версия, думаю поймете что к чему

var

cur_symb, symb_of_end, y, j: char;
mn, v_mnoj, v_mnoj2: set of char;

begin
v_mnoj:=['!'..'.'];
v_mnoj2:=[':'..'?'];
cur_symb:=' ';
mn:=[];
{writeln('Введите символ указывающий на конецстроки.');}
readln(symb_of_end);
{writeln('Введите множество символов.');}
while cur_symb <> symb_of_end do
begin
read(cur_symb);
if (cur_symb in v_mnoj) or (cur_symb in v_mnoj2) then mn:=mn+[cur_symb]
end;
{writeln('В множестве содержатся:');
writeln('знаки препинания:');}
for j:='!' to '.' do
if j in mn then write(j,' ');
for j:=':' to '?' do
if j in mn then write(j,' ');
readln;
readln;
end.

P.S. Добавил еще символы '!' '<' '>' '?' ':' ';'

Fox_NICK
25.03.2010, 19:48
ооо точно) сенк большое) + =)