Определить, является ли последовательность идентификатором - C (СИ)

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

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

Задание: Пользователь вводит последовательность символов и программа определяет является ли эта последовательность идентификатором Я знаю как реализовать этот код на Pascal. В С я новичок. Помогите форматнуть его в С!
Program Lab;
 Uses crt;
 Var
  st:string;
  k:integer;
 Procedure Ident(i:integer; f:string);
  Var
   j,s:integer;
  Begin
   s:=0;
  for j:=1 to i do
   begin
    if (('a'<=f[j]) and (f[j]<='z')) or ('0'<=f[j]) and (f[j]<='9')
    or ((f[j]='_')) or (('A'<=st[j]) and (st[j]<='Z')) and (f[j]<>'')
     then s:=s+1;
    end;
   if s=i
    then
     writeln('вводимая последовательность является идентификатором')
    else
     writeln('вводимая последовательность не является идентификатором');
  end;
 Begin
  ClrScr;
  Writeln('введите последовательность');
  Readln(st);
  k:=Length(st);
  if (('a'<=st[1]) and (st[1]<='z'))  or (('A'<=st[1]) and (st[1]<='Z'))
   then
    Ident(k,st)
   else
    writeln('вводимая последовательность не является идентификатором');
End.
Вот у меня что-то получилось, но все равно есть 2 ошибки. Не могу понять в чем дело?http://codepad.org/ifV1Xggf
#include <stdio.h>
char st[10000];
int k;
bool Ident(int i, char* f)
{
int j;
int s=0;
for(j =0; j < i; j++)
 if (! (('a'<=f[j]) and (f[j]<='z')) or ('0'<=f[j]) and (f[j]<='9')
  or ((f[j]='_')) or (('A'<=f[j]) and (f[j]<='Z')) and (f[j]<>'')))
return false;
return true;
}
 
int main()
{
printf("Введите строку \n");
gets(st);
if(Ident(strlen(st), st))
printf("Строка является идентификатором");
else
printf("Строка не является идентификатором");
return 0;
}

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

textual
Листинг программы
#include <stdio.h>
#include  <ctype.h>
char st[10000];
int k;
bool Ident(int i, char* f)
{
int j;
int s=0;
for(j =0; j < i; j++)
 if( (isapha(f[j])) || (isdigit(f[j])) || (f[j]=='_') )
   return false;
return true;
}
 
int main()
{
printf("Введите строку \n");
gets(st);
if(Ident(strlen(st), st))
printf("Строка является идентификатором");
else
printf("Строка не является идентификатором");
return 0;
}

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

  1. Подключение необходимых библиотек для работы с файлами и проверки типов данных.
  2. Объявление переменной типа char массива st[10000] для хранения введенной строки.
  3. Объявление переменной k типа int.
  4. Определение функции Ident(int i, char* f) для проверки строки на идентификатор.
  5. Установка начального значения переменной s равным 0.
  6. Проверка каждого символа строки на соответствие условиям функции isalpha(f[j]), isdigit(f[j]) и f[j]== '_'.
  7. Возврат значения false при несовпадении хотя бы одного символа и true в противном случае.
  8. Ввод строки с клавиатуры и сохранение ее в переменной st с помощью функции gets(st).
  9. Вызов функции Ident(strlen(st), st) для проверки строки на идентификатор.
  10. Вывод соответствующего сообщения в зависимости от результата проверки.

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


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

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

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