Подсчитать, какие ключевые слова Паскаля использованы в обрабатываемом тексте - Pascal

Узнай цену своей работы

Формулировка задачи:

пожалуйста, ! завтра сдавать контрольную, а у меня нет ничего( ПОЖАЛУЙСТА, НАДО написать программу!! Текст программы на Паскале хранится в файле на диске. Составить программу обработки текста программы: 1) Подсчитать, какие ключевые слова Паскаля и в каком колличестве использованы в обрабатываемом тексте; 2)Составить перечень имен простых переменных, используемых в левой части оператора присваивания; 3) представить перечень меток программы в алфавитном порядке.

Решение задачи: «Подсчитать, какие ключевые слова Паскаля использованы в обрабатываемом тексте»

textual
Листинг программы
uses crt;
const ks: array [1..39] of string=('program','uses','const','var','label','type','begin','end',
                                   'and','or','not','div','mod','if','then','else','case','of',
                                   'byte','integer','real','char','string','array','record','file','set',
                                   'for','to','do','downto','goto','in','nil','repeat','until','while',
                                   'function','procedure');
      r: set of char=[' ',':',';',','];
 
function CutName (str: string; q: byte): string;
var sss: string;
begin
sss:='';
while (q>=1) and (str[q] in ['a'..'z','0'..'9']) do
      begin
      sss:=str[q]+sss;
      dec(q);
      end;
CutName:=sss;
end;
 
function CutNameF (str: string; q: byte): string;
var sss: string;
begin
sss:='';
while (q<=length(str)) and (str[q] in ['a'..'z','0'..'9']) do
      begin
      sss:=sss+str[q];
      inc(q);
      end;
CutNameF:=sss;
end;
 
var f: text;
    k: array [1..39] of integer;
    s,sl,nm,lb: string;
    i,j: byte;
    c: char;
    
begin
assign(f,'D:\in.pas');
reset(f); nm:=''; sl:=''; lb:=''; j:=0;
while not (eof(f)) do
      begin
      readln(f,s);
      s:=' '+s+' ';
      if pos('label',s)<>0 then
         begin
         sl:=copy(s,pos('label',s)+5,pos(';',s)-pos('label',s)+5);
         for c:='a' to 'z' do
             for j:=2 to length(s) do
                 if (sl[j]=c) and (sl[j-1] in r) then lb:=lb+CutNameF (sl,j)+' ';
         sl:='';
         end;
      for i:=2 to length(s) do
          if copy(s,i,2)=':=' then nm:=nm+CutName (s,i-1)+', ';
      for i:=1 to length(s) do
          if not (s[i] in r) then sl:=sl+s[i] else
             if length(sl)>0 then
                begin
                for j:=1 to 39 do
                    if sl=ks[j] then inc(k[j]);
                sl:='';
                end;
      end;
close(f);
clrscr;
writeln('Ключевые слова:');
j:=0;
for i:=1 to 39 do
    if k[i]<>0 then
       begin
       inc(j);
       writeln(ks[i]:10,'- ',k[i]);
       if i mod 19=0 then
          begin
          writeln('Enter to continue...');
          readln();
          clrscr;
          writeln('Ключевые слова:');
          end;
       end;
writeln('Enter to continue...');
readln();
clrscr;
writeln('Перечень простых переменных: ',nm);
writeln('Перечень меток в алфавитном порядке: ',lb);
readln;
end.

Объяснение кода листинга программы

  1. В начале кода объявляются переменные и константы, используемые в дальнейшем.
  2. Функция CutName используется для обрезки строки, удаляя все символы до указанного индекса.
  3. Функция CutNameF используется для обрезки строки, удаляя все символы после указанного индекса.
  4. Переменная f используется для чтения текста из файла.
  5. Переменные s, sl, nm, lb и c используются для хранения различных частей текста.
  6. В цикле while считывается текст из файла, строка разделяется на слова, и каждое слово проверяется на наличие метки.
  7. Если слово является меткой, то оно обрезается с помощью функций CutName и CutNameF, и результат добавляется к переменной lb.
  8. Если слово не является меткой, то оно проверяется на наличие одного из ключевых слов Паскаля. Если слово совпадает с одним из ключевых слов, то оно добавляется в переменную k.
  9. После завершения цикла while выводится список ключевых слов Паскаля, для которых было найдено совпадение.
  10. Затем выводится список меток в алфавитном порядке.
  11. В конце программы выводится запрос на ввод для продолжения работы программы.
  12. При вводе Enter программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.154 из 5
Похожие ответы