PDA

View Full Version : سوال: تحلیل یک قطعه کد



a.maleki
جمعه 03 خرداد 1387, 16:11 عصر
با سلام خدمت تمامی دوستان
من در حال حاضر برنامه نویسی در محیط vb.net رو می دونم ولی مشکل من با این قطعه کد که به زیان ++c نوشته شده است از شما عزیزان درخواست دارم که اگر ممکنه تا حدودی این قطعه کد رو برای من تحلیل کنید تا من بفهمم این کد چه کاری انجام میده

مثلا کارکتر در این قطعه کد چه نقشی رو ایفا میکنه از تمامی دوستان ممنون میشم که به من یاری بدن یا در قسمتی که [char] معرفی شده ما می تونیم متغییرهای دیگهای ایجاد کنیم مثل (اعشاری و رشتهای و ...)
این کد برای من خیلی مهمه (( حیاتی)))[




#include<stdio.h>

#include<conio.h>

< include<string.h#

Void shell(int *,char*,int)
Int main()

{

Char s[۸۰];

Int gap[۸۰];

Clrscr();

«: Printf(» Enter a string);

Gets(s );

Shell(gap,s,strlen(s));

Printf(«\n the sorted string is : ٪s»,s);

Getch();

Return ۰;

}

****************************//

Void shell(int gap [], char * item, int count)
{

Register int I, j,step,k,p;

; Char x

Gap[۰] =count /۲;

While(gap[k] > ۱)

{

++; K

Gap[k]=gap[k-۱]/۲;

}//end of while

For (i= ۰;i<=k;i++)

{

Step=gap[i];

For(j=step;j<count; j++)

{

X=item[j];

P=j-step;

While(p>=۰ && x<item[p])

{

Item[p+step]=item[p];

P=p-step;

}

Item[p+step]=x;

}

}

}

Alay102
شنبه 04 خرداد 1387, 09:07 صبح
این قطعه کد در واقع داره همون الگوریتم Shell رو که یه الگوریتم Sort کردن داده هاست رو به زبون C پیاده میکنه

در این الگوریتم عناصر با فاصله Gap با هم مقایسه می شوند . به طورمثال اگر فاصله 5 باشد اولين عنصر با عنصر ششم و دومين عنصر با عنصر هفتم و... مقايسه مي شوند . تعيين اولين فاصله اختياري است ومي توان آن را نصف طول ليست در نظر گرفت و در هر بار اجرا فاصله بر 2 تقسيم مي شود.

Shell Sort (http://goanna.cs.rmit.edu.au/~stbird/Tutorials/ShellSort.html)

اما کار کاراکتر ( * ) ، تولید متغیر هایی از نوع Pointer (اشاره گر) در برنامه است !!
(اشاره گرها متغیر هایی هستند که می توانند آدرس داده های دیگر را در خود ذخیره کنند و از این آدرس ها در جاهای مختلف استفاده کنند !!)

a.maleki
شنبه 04 خرداد 1387, 09:34 صبح
دوست عزیز منمون
ولی در مورد اینکه فرقی داره که از متغیرهای اعشاری و یا رشته ای استفاده کنیم چیزی نگفتید

Alay102
یک شنبه 05 خرداد 1387, 10:01 صبح
در قسمتی که [char] معرفی شده ما می تونیم متغییرهای دیگری ایجاد کنیم مثل (اعشاری و رشتهای و ...)


آره ، چرا نتونی ؟!