Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите доделать задачку
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Замарочка
Собственно задание:
Дана непустая последовательность символов. Требуется построить и напечатать множество, элементами которого являются встречающиеся в последовательности: буквы от 'Т до 'X' и знаки препинания.

Решение...

uses crt;
const symbol=[';',',','.',':','!','?'];
bol=['T','U','V','W','X'];
var
g:set of 'T'..'X';
b:set of ';'..'?';
i,d:char;
begin
g:=[ ];
b:=[ ];
repeat
begin
read(d);
if d in symbol then
g:=g+[d];
if d in bol then
b:=b+[d];
end;
until d:='@';
readln;
for i:='T' to 'X' do
if i in g then
write(i);
end;
for i:=';' to '?' do
if i in b then
write(i);
end;
readln;
end.



На прикрепленном скрине видно на что ругается, помогите исправить!! Пожалуйста!!
Анна
Наверное, не присвоить, а равно
volvo
var
g:set of 'T'..'X';
b:set of ';'..'?'; { Что здесь имелось в виду? }


Дело в том, что элементами множества B могут быть только следующие 5 символов (исходя из твоего описания):
";", "<", "=", ">", "?"
ибо они именно в таком порядке расположены в таблице Ascii... Аккуратнее с этим. Так делать нужно очень осторожно...

А насчет ошибки - так в Until должно быть не присваивание, а сравнение:
Until d = '@';


Но программа все равно будет работать неверно (см. выше, почему)...
Замарочка
Цитата(volvo @ 22.01.2006 15:00) *

var
g:set of 'T'..'X';
b:set of ';'..'?'; { Что здесь имелось в виду? }


Дело в том, что элементами множества B могут быть только следующие 5 символов (исходя из твоего описания):
";", "<", "=", ">", "?"
ибо они именно в таком порядке расположены в таблице Ascii... Аккуратнее с этим. Так делать нужно очень осторожно...

Спасибо.
Так, понятно..
а можно мне получить правильную последовательность знаков препинания по таблице АСКИ кодов. плиз (или как мне организовать эту последовательность??? Знаки . , ! ? : ;)
Потому что мне надо построить и напечатать множество, элементами которого являются встречающиеся в последовательности: буквы от 'Т до 'X' и знаки препинания;
Замарочка
Вот это ты имел ввиду symbol=[';','.',',',':','!','?']; ща последовательность правильная??
Но программка всё равно как то неправильно работает, не выводит результат.
А тут есть что нибудь наподобии этой проги? Или помогите доделать плиз!

Код
uses crt;
const symbol=[';','.',',',':','!','?'];
      bol=['T','U','V','W','X'];
var
      g:set of 'T'..'X';
      b:set of ';'..'?';
      i,d:char;
begin
      g:=[ ];
      b:=[ ];
repeat
begin
      read(d);
if d in symbol then
      g:=g+[d];
if d in bol then
      b:=b+[d];
end;
until d='@';
      readln;
for i:='T' to 'X' do
begin
if i in g then
      write(i);
end;
for i:=';' to '?' do
begin
if i in b then
      write(i);
end;
      readln;
end.
volvo
const
right_symbols =[';',',','.',':','!','?','T','U','V','W','X'];

var
s: string; i: integer;
my_set: set of char;
begin
readln(s);
for i := 1 to length(s) do
my_set := my_set + [s[i]];
my_set := my_set * right_symbols; { убираем все НЕразрешенные символы }

{ осталось только распечатать множество }
end.

Как распечатать множество - ищи по форуму, уже обсуждалось...
Замарочка
Вообщем задачка сделана! Если надо то пусть в базе храниться у вас...

Задание:
Дана непустая последовательность символов. Требуется построить и напечатать множество, элементами которого являются встречающиеся в последовательности:
цифры от '5' до '9' и знаки арифметических операций.

Текст программы:

uses crt;
var c,i,j:Char;
cifri: set of '5'..'9';
znak: set of '+'..'/';
Begin
clrscr;
cifri:=[];
znak:=[];
Write('Vvedite posledovatelbnostb simvolov >>>>>');
repeat
read©;
if c in ['5','6','7','8','9'] then
cifri:=cifri + [c]
else
if c in ['+','-','*','/'] then znak:=znak + [c];
until EOLN;
textcolor(9);Write('Cifri: ');
for i:='0' to '9' do
if i in cifri then write(' ',i);
writeln;
textcolor(10);Write('Znaki: ');
for j:='+' to '/' do
if j in znak then write(' ',j);
readln;readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.