Помощь - Поиск - Пользователи - Календарь
Полная версия: строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
qweds
Задана строка s
задан массив букв m
----------------------
Найти номера букв в строке s которых нет в массиве m (пробелы не в счет).

Renbo
а в чём проблемы? или ты думал за тебя всю прогу напишут?
qweds
Код


        for j:=1 to length(s) do begin
        if  s[j]=' ' then    else begin
        for i:=1 to v do begin
        if    m[i]=s[j]  then  else writeln('nedopustimyi symvol ',s[j], ' na pozicii' , j);

      end;
      end;
      end;

соответственно проверяю по 1 символу из массива каждый символ в строке, но из кода видно, что это неправильный подход т.к. результат будет выводиться 3 раза (для случая если все символы недопустимые)
или почти 3 раза unsure.gif
volvo
Цитата
из кода видно, что это неправильный подход
Конечно, неправильный... Надо же было додуматься, работать только по ветке Else... Вот так не пробовал:

for j:=1 to length(s) do begin
if s[j] <> ' ' then begin
found := false; { <--- Надо запоминать, было ли найдено что-то в массиве или нет }
for i:=1 to v do begin
found := false or (m[i] = s[i]);

if not found then
writeln('nedopustimyi symvol ',s[j], ' na pozicii' , j);
end;

?
hiv
Цитата(qweds @ 10.04.2007 10:42) *
соответственно проверяю по 1 символу из массива каждый символ в строке, но из кода видно, что это неправильный подход т.к. результат будет выводиться 3 раза (для случая если все символы недопустимые)
или почти 3 раза unsure.gif

Не три раза, а v-раз будет выводить сообщение о недопустимом символе, если он не имеется в массиве M, а если имеется - v-1 раз.
По заданию нужно наоборот:

var ....
ns :boolean; {вводим логическую переменную}
....

for j:=1 to length(s) do
if s[j]<>' ' then begin {так нагляднее}
i:=1;
ns:=false;
while (not ns) and (i<v) do begin {ищем первое совпадение символа в массиве}
inc(i);
ns:=(m[i]=s[j]); {если символы совпали, то ns=true правда}
end;
if not ns then writeln('nedopustimyi symvol ',s[j], ' na pozicii' , j);

end;
ЗЫ: Код не проверял и не компилил...
Volvo как всегда меня опередил smile.gif
qweds
СПАСИБО, все работает good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.