Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что не так паскаль

Galina Makeeva Знаток (296), закрыт 9 месяцев назад
Cмысл в том что мне надо сделать так, что если в строке есть эти символы, то пишет да, если нет, то нет
4. Дана строка (вводится с клавиатуры). Содержит ли она символы “№ ! » ; , .% : ? @ # $ ^ & * ( )”?

var
s: string;
i: integer;
m: set of char;
begin
ReadLn(s);
for i := 1 to Length(s) do
if s[i] in ['“','№ ','!',' »',' ;',' ,',' .',' % ',': ','? ','@',' #',' $ ','^',' & ','* ','( ',')','”','?'] then
Include(m, s[i]);
if m = ['“','№ ','!',' »',' ;',' ,',' .',' % ',': ','? ','@',' #',' $ ','^',' & ','* ','( ',')','”','?'] then
WriteLn('Yes')
else
WriteLn('No');
ReadLn;
end.
Лучший ответ
Андрей Высший разум (425838) 2 года назад
if m <> [] then writeln('Yes') else writeln('No');

Тебе же надо проверить, что в строке встретился хотя бы ОДИН символ из списка. А ты проверяешь, что в строке есть ВСЕ символы списка.
Galina MakeevaЗнаток (296) 2 года назад
А теперь он всегда Yes пишет
Андрей Высший разум (425838) Galina Makeeva, А если добавить m := []; перед for?
Galina MakeevaЗнаток (296) 2 года назад
Андрей Высший разум (425838) Galina Makeeva, m <> [] - между [ и ] НИЧЕГО НЕТ - ПУСТОЕ множество.
Galina MakeevaЗнаток (296) 2 года назад
Тоже
Андрей Высший разум (425838) Galina Makeeva, В исходном тексте вопроса у тебя было правильно - каждый символ отдельно. На скриншоте сейчас бред - все символы одной строкой.
Galina MakeevaЗнаток (296) 2 года назад
Ааа
Galina MakeevaЗнаток (296) 2 года назад
Теперь всегда No
Остальные ответы
Похожие вопросы