Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите доделать задачку
Форум «Всё о Паскале» > 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(c);
     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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.