Является данная строка инденфикатором? - C (СИ)
Формулировка задачи:
я не знаю ли правильно сделал задание является данная строка индефикатором?
#include <stdio.h>
#include <string.h>
#include<conio.h>
char st[10000];
int k;
int Ident(int i, char* f)
{
int j;
for(j =0; j < i; j++)
if ((! (('a'<=f[j]) && (f[j]<='z')) || ('0'<=f[j]) && (f[j]<='9')
|| ((f[j]=='_')) || (('A'<=f[j]) && (f[j]<='Z')) && (f[j]!='_')))
return 0;
return 1;
}
int main()
{
printf("vvedit stroky \n");
gets(st);
if(Ident(strlen(st), st))
printf("stroka is indefikator");
else
printf("stroka no indefikator");
getch();
return 0;
}Решение задачи: «Является данная строка инденфикатором?»
textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
int check(const char* str) {
int isOk = isalpha(*str) || (*str == '_');
for (++str; isOk && *str; ++str) {
isOk = isalnum(*str) || (*str == '_');
}
return isOk;
}
int main() {
printf("%s\n", check("") ? "yes" : "no");
printf("%s\n", check("a1") ? "yes" : "no");
printf("%s\n", check("_abc") ? "yes" : "no");
printf("%s\n", check("4fef") ? "yes" : "no");
printf("%s\n", check("META_12") ? "yes" : "no");
printf("%s\n", check("META_1.2") ? "yes" : "no");
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с функциями ввода-вывода и проверки типов данных.
- Создаем функцию
check, которая принимает в качестве аргумента указатель на строку и проверяет, является ли она идентификатором. Возвращает1, если является, и0в противном случае. - Внутри функции
checkинициализируем переменнуюisOkзначениемisalpha(str[0]) || (str[0] == '_'). Это условие проверяет, является ли первый символ строки буквой или подчеркиванием. - Затем в цикле проходим по остальным символам строки, начиная со второго. Для каждого символа проверяем, является ли он буквой, цифрой или подчеркиванием. Если да, то обновляем значение
isOk. - Возвращаем
isOkв конце функции. - В функции
mainвызываем функциюcheckдля разных строк и выводим результат на экран. - Код выводит
yes, если строка является идентификатором, иno, если нет. - Завершаем программу, возвращая
0.