Программа
PROGRAM Calc;
VAR F:text; { Файловая переменная }
FileName:string; { Имя файла }
QuantityBEGIN,QuantityEND:word; { Количества BEGIN и END }
i:byte; { Счетчик }
PROCEDURE GetFirstWord(var St,FirstWord:string);
{ Процедура выделения первого слова из строки }
Begin
while not(St[1] in ['A'..'Z']) and (Length(St)>0) do
St:=Copy(St,2,Length(St)-1);
{ Цикл удаления первых символов "НЕБУКВ" }
FirstWord:=''; { "Сброс" значения переменной }
while (St[1] in ['A'..'Z']) and (Length(St)>0) do
begin { Цикл переноса первого слова из St в FirstWord }
FirstWord:=FirstWord+St[1];
{ Копирование первого символа из St в FirstWord }
St:=Copy(St,2,Length(St)-1) { Удаление первого символа из St }
end
End;
PROCEDURE GetQuantity(var F:text;var QuantityBEGIN,QuantityEND:word);
{ Процедура подсчета количества слов BEGIN и END в файле F }
Var Buf:string; { Буфер для чтения строки из файла }
WordString:string; { Выделенное из строки слово }
Begin
{ Обнуление значений: }
QuantityBEGIN:=0;
QuantityEND:=0;
Reset(F); { Открытие файла под чтение }
while not EOF(F) do { Цикл просмотра файла }
begin
ReadLn(F,Buf); { Чтение строки из файла }
while Length(Buf)<>0 do { Цикл обработки строки }
begin
for i:=1 to Length(Buf) do Buf[i]:=UpCase(Buf[i]);
{ Перевод строчных букв строки в заглавные }
GetFirstWord(Buf,WordString);
{ Выделение первого слова из строки }
{ Подсчет слов BEGIN и END: }
Inc(QuantityBEGIN,Ord(WordString='BEGIN'));
Inc(QuantityEND,Ord(WordString='END'))
end
end;
Close(F) { Закрытие файла }
End;
BEGIN
WriteLn;
Write('Введите имя файла '); { Вывод приглашения }
ReadLn(FileName); { Ввод имени файла }
Assign(F,FileName); { Связывание имени файла с файловой переменной }
GetQuantity(F,QuantityBEGIN,QuantityEND); { Подсчет слов }
{ Вывод результатов: }
WriteLn('В файле ',FileName);
WriteLn('Слов BEGIN: ',QuantityBEGIN);
WriteLn('Слов END: ',QuantityEND);
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию