• Модифицируйте программу так, чтобы печатались только:
    а) слова, начинающиеся на букву «л»;
    б) слова, заканчивающиеся на букву «ь»;

    Код программы:
    var
    stroka, slovo : string;
    i : integer;
    begin
    var b:=['a'..'z','A'..'Z','а'..'я','А'..'Я'];
    WriteLn('Введите строку из русских слов с любыми разделителями ');
    ReadLn(stroka);
    stroka:=trim(stroka);
    stroka:=stroka + '.'; // В конец строки поставим точку для того,
    // чтоб гарантировать обязательное завершение программы
    i:= 1; // рассматривать строку будем с первой буквы
    while Length(stroka) <> 0 do
    begin
    if pos(copy(stroka,i,1),' ,.?!-:;') <> 0 then
    {если i-ый символ из строки stroka содержится в строке ' ,.?!-:;', то}
    begin
    slovo := copy(stroka,1,i-1); // копируем слово
    writeln(slovo); //печатаем его
    delete(stroka,1,i-1); // Удаляем его из текста
    while (length(stroka)>0)and (not(stroka[1] in b)) do
    delete(stroka,1,1); // удаляем все разделители до следующего слова
    i := 1; // снова рассматриваем слово с первого символа
    end
    else i := i+1; // определяем следующий символ
    end;
    end.

    question img
    question img

Ответы 1

  • Нужно добавить всего-то 1 строку:...if pos(copy(stroka,i,1),' ,.?!-:;') <> 0 then {если i-ый символ из строки stroka содержится в строке ' ,.?!-:;', то}begin slovo := copy(stroka,1,i-1); // копируем словоIf (slovo[1]='л') or (slovo[Length(slovo)]='ь') then Writeln(Slovo);delete(stroka,1,i-1); // Удаляем его из текстаwhile (length(stroka)>0)and (not(stroka[1] in b)) do delete(stroka,1,1); // удаляем все разделители до следующего словаi := 1; // снова рассматриваем слово с первого символаend....
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years