Определить, является ли последовательность идентификатором - 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;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и проверки типов данных.
- Объявление переменной типа char массива st[10000] для хранения введенной строки.
- Объявление переменной k типа int.
- Определение функции Ident(int i, char* f) для проверки строки на идентификатор.
- Установка начального значения переменной s равным 0.
- Проверка каждого символа строки на соответствие условиям функции isalpha(f[j]), isdigit(f[j]) и f[j]== '_'.
- Возврат значения false при несовпадении хотя бы одного символа и true в противном случае.
- Ввод строки с клавиатуры и сохранение ее в переменной st с помощью функции gets(st).
- Вызов функции Ident(strlen(st), st) для проверки строки на идентификатор.
- Вывод соответствующего сообщения в зависимости от результата проверки.