PDA

View Full Version : کلمات کلیدی



interchange
جمعه 27 آبان 1384, 11:38 صبح
سلام

می خواستم بدونم در ++c کلمات کلیدی به چه وسیله ای شناسایی می شوند . برای مثال اگر من یک رشته را با gets بگیرم بعد بخوام تشخیص بدم که آیا این رشته کلمه ی کلیدی است یا نه چه کار باید بکنم؟

interchange
شنبه 28 آبان 1384, 10:55 صبح
یعنی واقعا هیچ کس نمیتونه جوابی بده ؟

sh_roohani
شنبه 28 آبان 1384, 16:19 عصر
منظورتون کلمات کلیدی خود زبان ++C هست؟ اگه اینطوره که فهرست این کلمات مشخصه!

aakh1361
یک شنبه 29 آبان 1384, 10:35 صبح
با دو تا For تو در تو مشکلات حل میشه
اولی هر بار که اجرا میشه یک حانه اشاره گر رشته رو جلو می بره
و دومی For هم به اندازه کلمه مورد نظر از محل For اولی میره جلو و میگرده که ببینه کلمه مورد نظر در رشته هست یا نه و اگر پیدا شد For اولی که به اولین خانه کلمه پیدا شده در رشته اشاره می کنه و اون رو بر می گردونه و اگر کلمه پیدا نشد دو باره For اولی تکرار میشه


#include <stdio.h>
#include <Conio.h>
#include <String.h>[/font]

[font=Tahoma]
char * Str = "Hello Ali Asghar Khosroabadi";
char * Word = "Asghar";

int FindWord(char *MyStr,char * MyWord)
{
int f1,f2,SizeStr,SizeWord,MyPtr;

char *Temp;

SizeStr=strlen(MyStr);
SizeWord=strlen(MyWord);

if(SizeWord>SizeStr) return -1;

Temp=(char*)malloc(SizeWord);

for (f1=0;SizeStr-SizeWord;f1++)
{
MyPtr=0;
for (f2=f1;f2<SizeWord;f2++)
{
Temp[MyPtr++]=MyStr[f2];
};
if(strcmp(Temp,MyWord)) return f1;
};
free(Temp);
return -1;
};


void main()
{
if(FindWord(Str,Word)!=-1)
printf("Find My Word Is Offset %i\n");
else
printf("No Find Word In Str\n");
};


البته تو Notpad نوشتم ولی فکر نکنم مشکل داشته باشده
حالا که فکر می کنم می بینم خود سی برای اینکار تابعی به نام StrStr داره:گریه: :گریه:
با این روش هر کلمه ای رو که بخواید می تونید تو یک رشته پیدا کنید
:چشمک: :چشمک: :چشمک:

interchange
دوشنبه 30 آبان 1384, 13:59 عصر
خیلی ممنون ولی
من باید رشته ی خودمو با 31 کلمه کلیدی ++c مقایسه کنم . ولی این بهینه نیست .

aakh1361
سه شنبه 01 آذر 1384, 02:08 صبح
ولی من باید رشته ی خودمو با 31 کلمه کلیدی ++c مقایسه کنم .
تابعش رو که نوشتم می تونی خود 31 حالت رو با هاش مقایسه کنی



ولی این بهینه نیست .

مگه قرار چیکار باهاش کنی ؟http://asefsoft.com/qsimages/175.gif http://asefsoft.com/qsimages/175.gif
می تونی تستش کنی ببینی بهینه هست یا نه http://asefsoft.com/qsimages/121.gif http://asefsoft.com/qsimages/121.gif

interchange
سه شنبه 01 آذر 1384, 13:16 عصر
تابعش رو که نوشتم می تونی خود 31 حالت رو با هاش مقایسه کنی


مگه قرار چیکار باهاش کنی ؟http://asefsoft.com/qsimages/175.gif http://asefsoft.com/qsimages/175.gif
می تونی تستش کنی ببینی بهینه هست یا نه http://asefsoft.com/qsimages/121.gif http://asefsoft.com/qsimages/121.gif

سلام
می شه لطف کنید 31 کلمه کلیدی ++c را مقایسه کنید تا متوجه منظور من بشید ؟
یعنی 31 کلمه کلیدی را به صورت ثابت با رشته ام که از ورودی می گیرم مقایسه کنم ؟
نه فکر نمی کنم این بهینه باشه . آیا کلمات کلیدی با کد خاصی شروع می شوند ؟

aakh1361
پنج شنبه 03 آذر 1384, 02:42 صبح
می شه لطف کنید 31 کلمه کلیدی ++c را مقایسه کنید تا متوجه منظور من بشید ؟

راستش اصلا منظورتون رو از کلمات کلیدی نمی فهمم



یعنی 31 کلمه کلیدی را به صورت ثابت با رشته ام که از ورودی می گیرم مقایسه کنم ؟

توضیح بیشتر



نه فکر نمی کنم این بهینه باشه .

تستش کردین



آیا کلمات کلیدی با کد خاصی شروع می شوند ؟

یعنی چی ؟ ما داریم از رشته ها صحبت می کنیم نه اعداد !!
http://asefsoft.com/qsimages/175.gif

interchange
پنج شنبه 03 آذر 1384, 08:20 صبح
کلمات کلیدی مثل :for مثل while مثل if و ....

aakh1361
جمعه 04 آذر 1384, 02:26 صبح
خوب این به ما بستگی دازه که چه کلماتی رو بخوایم کلامات کلیدی باشن

interchange
جمعه 04 آذر 1384, 19:47 عصر
یعنی چی به ما بستگی داره
سوال من اینه که آیا در رشته ی ورودی یک از 32 کلمه ی کلیدی وجود دارد یا نه؟

aakh1361
یک شنبه 06 آذر 1384, 03:22 صبح
من کاملا متوجه منظور شما شدم
ولی مثل اینکه شما متوجه حرفهای من نمیشد

http://asefsoft.com/qsimages/13.gif

aakh1361
یک شنبه 06 آذر 1384, 03:56 صبح
فکر کنم این برنامه مشکل شما رو حل کنه


#include <stdio.h>
#include <alloc.h>
#include <Conio.h>
#include <String.h>[/font]

const int MaxWord=4;
char * Str = "for while if";

char * Word[MaxWord]= {"for","while","if","ali"};


int FindWord(char *MyStr,char * MyWord)
{
int f1,f2,SizeStr,SizeWord,MyPtr;

char *Temp;

SizeStr=strlen(MyStr);
SizeWord=strlen(MyWord);

if(SizeWord>SizeStr) return -1;

Temp=(char*)malloc(SizeWord+1);

for (f1=0;f1<(SizeStr-SizeWord+1);f1++)
{
MyPtr=0;
for (f2=f1;f2<f1+SizeWord;f2++)
{
Temp[MyPtr]=MyStr[f2];
MyPtr++;
};
if(strcmp(Temp,MyWord)==0) return f1;
memset(Temp,0,SizeWord+1);
};
free(Temp);
return -1;
};

int ptr,n,f;
void main()
{
clrscr();
for(n=0;n<MaxWord;n++)
{
if((ptr=FindWord(Str,Word[n]))!=-1)
printf("Find My Word ' %s ' Is Offset %i\n",Word[n],ptr);
else
printf("No Find Word ' %s ' In Str\n",Word[n]);

printf("/*\/*\/*\/*\/*\/*\/*\/*\/*\/*\/*\n");
}
};

http://asefsoft.com/qsimages/0.gif http://asefsoft.com/qsimages/0.gif http://asefsoft.com/qsimages/0.gif