Форум «Всё о Паскале» _ Задачи _ Подскажите в чем проблема (множества)
Автор: wary 13.12.2006 3:24
Задача: Осуществить ввод элементов заданного множества с клавиатуры. Определить является ли множество {'T','h','j','k'} его подмножеством.
Алгоритм: 1. Вводим 1-е множество с клавиатуры (я представляю себе что это может быть либо массив либо строка)
2. Сравниваем 1-е и 2-е относительно условия.
Вот что у меня получилось ->
Код
Program qwerty; uses CRT; const N=4; type SetChar=set of char; var mn2:SetChar=['T','h','j','k']; a:string; i,YES,NO:integer; BEGIN Begin ClrScr; end; readln(a); FOR i:=0 to N do if (A[i]>=mn2) then Inc(YES) else Inc(NO); if YES=4 then writeln('-OK-'); if NO=4 then writeln('-NO-'); readln; end.
При компилировании выдает @Error 26:type mismatch@ на месте
Код
if (A[i]>=mn2)
Просьба помочь разобраться, почему идет несовместимоть типов????, ведь например, если я
Код
if (A[i]>=mn2)
заменю на
Код
if (A[i] in mn2)
, то все работает. Таже проблема возникает если переменную "а" обьявляю как массив. Может я чего-то не допонимаю
Автор: volvo 13.12.2006 3:33
Цитата
1. Вводим 1-е множество с клавиатуры (я представляю себе что это может быть либо массив либо строка)
Ты сам себе противоречишь: МНОЖЕСТВО это должно быть, и ничто другое...
uses CRT; const mn2 = ['T','h','j','k']; type SetChar=set of char; var new_mn: SetChar; a:string; i:integer;
BEGIN ClrScr; readln(a); new_mn := []; FOR i:=1 to length(a) do new_mn := new_mn + [a[i]]; if mn2 <= new_mn then writeln('Yes') else writeln('no'); readln; end.
(набирал прямо здесь, поэтому ногами сильно не пинать )
Автор: wary 13.12.2006 12:44
Цитата
FOR i:=1 to length(a) do new_mn := new_mn + [a[i]];
Это получается мы наполняем множество всеми элементами из строки ?
Автор: Lapp 13.12.2006 15:04
Цитата(wary @ 13.12.2006 9:44)
Это получается мы наполняем множество всеми элементами из строки ?
Да.
Автор: wary 14.12.2006 0:42
огромное спасибо, наконецто с задачкой разобрался.