Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2013, 23:22   #1
kolbaskin
Новичок
Джуниор
 
Регистрация: 29.12.2013
Сообщений: 2
Восклицание Вводится последовательность символов, конец ввода -ESC(код#27). Определить количество букв "b". помогите сделать через string.

Код:
uses crt;
const zn=[',','.','!','?','-'];
var a,b:char;
    k:integer;
begin
writeln('Введите последовательность символов, в том числе букву b и знаки препинания');
writeln('конец ввода -ESC');
k:=0;
a:=readkey;
write(a);
repeat
b:=readkey;
if b<>#27 then write(b);
if (b='b')and(a in zn) then k:=k+1;
a:=b;
if b=#27 then writeln
until b=#27;
write('Количество букв b после знаков препинания=',k)
end.

Последний раз редактировалось Stilet; 30.12.2013 в 09:21.
kolbaskin вне форума Ответить с цитированием
Старый 30.12.2013, 07:05   #2
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

Считываете строку целиком, потом посимвольно пролистываете её. Я правда не знаю, как в string засунуть код символа ESC.
Либо добавляете в строку считанные символы до тех пор, пока не будет нажата кнопка ESC, потом анализируете полученную строку.
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 30.12.2013, 09:12   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы такой вариант предложил:
Код:
uses crt;
var a,ex:char;
 k:integer;
begin
  writeln('Введите последовательность символов, в том числе букву b и знаки препинания');
  writeln('конец ввода -ESC');
  k:=0;
  repeat
    a:=readkey;
    if a=#0 then ex := readkey; {обработаем нажатие расширенных клавиш}

    if (a='b') then k:=k+1; {если нажали клавишу b, увеличим счётчик}

    if a>=' ' then Write(a); {если клавиша имеет "печатное" значение, выведем её на экран}

  until a=#27;
  WriteLn;
  writeLn('Количество букв b =',k);

  WriteLn; WriteLn('Press any key to exit...');  readkey
end.


правда, немного смущает текст в коде программы:
Цитата:
Код:
write('Количество букв b после знаков препинания=',k)
Вроде бы не увидел такого в условиях задачи.
Ну и второе, непонятно, зачем здесь тип String...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вводится текст. Конец ввода <F2>. Найти количество букв "е" лина 555 Паскаль, Turbo Pascal, PascalABC.NET 6 16.10.2013 20:21
Подсчитать количество букв "й", "ы" и "я", содержащихся в заданной строке. VoltZZZ Помощь студентам 2 01.03.2012 23:39
Вводится текст. Конец ввода F6. Найти количество заглавных букв. (Паскаль) Casper098 Помощь студентам 2 06.10.2011 06:03
Вводится текст. Конец ввода <F1>. Найти кол-во букв "А" Руся93 Помощь студентам 4 02.10.2011 12:24