aminnokia
شنبه 02 خرداد 1388, 18:19 عصر
سلام خدمت تمام دوستان.این برنامهquicksortبه زبان cهستش.
iاین برنامه ورودی رو به صورت کاراکتر و رشته 80 تایی میگیره.من میخوام به صورت int
بگیره و هر کاری میکنم درست نمیشه.اگه ممکنه کمکم کنید.ممنونم. اینم کدش:
#include <stdio.h>
#include <conio.h>
#include <string.h>
void quick(char *, int, int);
int main()
{
char s[80];
clrscr();
printf(" enter a string :");
gets(s) ;
quick(s, 0, strlen(s) - 1);
printf("\n the sorted string is: %s", s);
getch();
return 0;
}
//**************
void quick(char item[], int left, int right)
{
register int i, j;
char x, y ;
i = left;
j = right;
x = item[(left + right) / 2];
do {
while(item[i] < x && i < right) i++ ;
while(x < item[j] && j > left) j -- ;
if(i <= j) {
y = item[i] ;
item[i] = item[j];
item[j] = y;
i++ ;
j -- ;
}//end of if
} while(i <= j);
if(left < j) quick(item, left, j) ;
if(i < right) quick(item, i, right);
}
iاین برنامه ورودی رو به صورت کاراکتر و رشته 80 تایی میگیره.من میخوام به صورت int
بگیره و هر کاری میکنم درست نمیشه.اگه ممکنه کمکم کنید.ممنونم. اینم کدش:
#include <stdio.h>
#include <conio.h>
#include <string.h>
void quick(char *, int, int);
int main()
{
char s[80];
clrscr();
printf(" enter a string :");
gets(s) ;
quick(s, 0, strlen(s) - 1);
printf("\n the sorted string is: %s", s);
getch();
return 0;
}
//**************
void quick(char item[], int left, int right)
{
register int i, j;
char x, y ;
i = left;
j = right;
x = item[(left + right) / 2];
do {
while(item[i] < x && i < right) i++ ;
while(x < item[j] && j > left) j -- ;
if(i <= j) {
y = item[i] ;
item[i] = item[j];
item[j] = y;
i++ ;
j -- ;
}//end of if
} while(i <= j);
if(left < j) quick(item, left, j) ;
if(i < right) quick(item, i, right);
}