Определить, является ли последовательность идентификатором - 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) для проверки строки на идентификатор.
- Вывод соответствующего сообщения в зависимости от результата проверки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д