Строка в паскале, неверные идентификаторы и вывод их номеров - Pascal

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

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

Ввести строку символов, в которой задана последовательность идентификаторов (синтаксис pascal), отделенных друг от друга пробелами. Вывести номера неверных идентификаторов. у мну получается вывести номера некоректных символов в строке:
Program xxx;
  uses crt;
Const
  possible : set of char=['0'..'9', 'a'..'z', 'A'..'Z', '_', ' '];
  numbers : set of char=['0'..'9'];
var
  str: string;
  i: byte;
  Begin
  ClrScr;
   
  writeln ('BBeguTe cTpoKy');
  readln (str);
 
   for i:=1 to length(str) do
      begin
   if not (str[i] in possible)
      then
      writeln ('not correctly element ',i);
   if (i=1) and (str[i] in numbers)
      then
      writeln ('not correctly element ', i);
   if (str[i] in numbers) and (str[i-1]=' ')
      then
      writeln ('not correctly element ', i);
   end;
 
  readln;
  End.
помогите плиз чтобы выводила прога не номера некоректных символов, а номера идентификаторов в которых они расположены.
Добавлено через 1 час 6 минут 0 секунд
P.S. идентификатор = имя . может состоять из букв латинского алфавита, цифр и знака подчеркивания. Не может начинаться с цифры, и не может включать другие символы.
Добавлено через 35 секунд
=(

Решение задачи: «Строка в паскале, неверные идентификаторы и вывод их номеров»

textual
Листинг программы
program kkk;
uses crt;
const possible:set of char=['0'..'9','a'..'z','A'..'Z','_'];
var count,i,j:integer;
    f:boolean;
    st,buf:string;
    slova:array[1..100]of string;
begin
 clrscr;
 readln(st);
 count:=1;
 repeat
  if (st[1]=' ') or (length(st)=0) then while st[1]=' ' do delete(st,1,1)
  else
  begin
   while (st[1]<>' ') and (length(st)>0) do
   begin
    buf:=buf+st[1];
    delete(st,1,1);
   end;
  slova[count]:=buf;
  buf:='';
  inc(count);
  end;
 until (length(st)=0) and (length(buf)=0);
 
 for i:=1 to count-1 do
 begin
  f:=true;
  if (slova[i][1]>='0') and (slova[i][1]<='9') then f:=false
  else
  begin
   for j:=1 to length(slova[i]) do
   if not(slova[i][j] in possible) then
   begin
    f:=false;
    break;
   end;
  end;
  if not f then write(i,' ');
 end;
 readln;
end.

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


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

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

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