ايران ويج

نسخه‌ی کامل: جستجوی دودویی با استفاده از اشارگرها در زبان C
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام خسته نیاشید واسه برنامه جستجو با اشارگرها به مشکل برخوردم کسی میتونه کمکم کنه؟؟؟؟؟؟؟[/size]
Binary search [string pointer array]

#include <stdio.h>
#include <string.h>

static int binsearch(char *str[], int max, char *value);

int main(void) {
/* note, array needs to be sorted for bsearch... */
char *strings[] = { "bill", "chris", "jason", "randy", "trish" };
int i, asize, result;

i = asize = result = 0;

asize = sizeof(strings) / sizeof(strings[0]);

for(i = 0; i < asize; i++)
printf("%d: %s\n", i, strings[i]);

printf("\n");

if((result = binsearch(strings, asize, "randy")) != 0)
printf("`randy' found at position: %d\n", result);
else
printf("`randy' NOT found..\n");

if((result = binsearch(strings, asize, "nick")) != 0)
printf("`nick' found at %d\n", result);
else
printf("`nick' was NOT found..\n");

return 0;
}

static
saeed saeed: bia

****************************************************************************************
Binary search [string pointer array]

#include <stdio.h>
#include <string.h>

static int binsearch(char *str[], int max, char *value);

int main(void) {
/* note, array needs to be sorted for bsearch... */
char *strings[] = { "bill", "chris", "jason", "randy", "trish" };
int i, asize, result;

i = asize = result = 0;

asize = sizeof(strings) / sizeof(strings[0]);

for(i = 0; i < asize; i++)
printf("%d: %s\n", i, strings[i]);

printf("\n");

if((result = binsearch(strings, asize, "randy")) != 0)
printf("`randy' found at position: %d\n", result);
else
printf("`randy' NOT found..\n");

if((result = binsearch(strings, asize, "nick")) != 0)
printf("`nick' found at %d\n", result);
else
printf("`nick' was NOT found..\n");

return 0;
}

static int binsearch(char *str[], int max, char *value) {
int position;
int begin = 0;
int end = max - 1;
int cond = 0;

while(begin <= end) {
position = (begin + end) / 2;
if((cond = strcmp(str[position], value)) == 0)
return position;
else if(cond < 0)
begin = position + 1;
else
end = position - 1;
}

return 0;
}
من این جواب رو نوشتم اما از صحتش مطمیئن نیستم