düşünmek kolaydır ama yapmak zordur, hayatta en zor olan şey düşünüleni yapmaktır.

XML

yazinin C dilinin isimlendirme kurallarina uygun olup olmadigini sinama

#include 

int is_legal(const char * str);
int is_keyword(const char *str);
int mystrcmp(const char *str1, const char*str2);
unsigned int mystrlen(const char *string);

int main() {
	
	char str[100];

	printf("sinanacak ismi girin : ");
	gets(str);


	if (is_legal(str))
        printf("(%s) legal isim\n", str);
	else
		printf("(%s) legal isim DEGIL\n", str);

	return 0;
}

int is_legal(const char * str) {

	int i;
	char ch;
	char legals[63];
    
	if (is_keyword(str))
		return 0;
	if (mystrlen(str) > 31)
		return 0;

	ch = *str;
	if (ch >= '0' && ch <= '9')
		return 0;

	for (i = 0; i < 63; ++i) {
		if (i < 63)
			legals[i] = 'A' + i - 37;
		if (i < 37)
			legals[i] = 'a' + i - 11;
		if (i < 11)
			legals[i] = '0' + i - 1;
		if (i < 1)
			legals[i] = '_';
	}

	while (*str != '\0') {
		int flag = 1;
		for (i = 0; i < 63; ++i)
			if (*str == legals[i])
				flag = 0;
		if (flag)
			return 0;
		++str;
	}

	return 1;
}

int is_keyword(const char *str) {

	int i;
	char *keywords[32] = {	"auto", "break", "case", "char", "const", "continue", "default",
							"do", "double", "else", "enum", "extern", "float", "for", 
							"goto", "if", "int", "long", "register", "return", "short", 
							"signed", "sizeof", "static", "struct", "switch", "typedef", 
							"union", "unsigned", "void", "volatile", "while"};

	for (i = 0; i < 32; ++i)
		if (mystrcmp(str, keywords[i]) == 0)
			return 1;

	return 0;
}

int mystrcmp(const char *str1, const char*str2) {

	while (*str1 == *str2) {
		if (*str1 == '\0')
			return 0;
		++str1;
		++str2;
	}

	return *(unsigned char *)str1 > *(unsigned char *)str2 ? 1 : -1;
}

unsigned int mystrlen(const char *string) {

	unsigned int lenght = 0;

	while (string[lenght] != '\0')
		++lenght;

	return lenght;

}

Thursday, July 13, 2006

Yorumlar

Isim
 
Email

Yorum (HTML kapali)
 
Resimdeki sayiyi asagidaki kutuya yazin:

(Not: Sayiyi okuyamiyorsaniz, yeni bir sayi üretmek için sayfayi yeniden yükleyin.)