整列関数で分からないところがあります
Posted: 2010年5月31日(月) 16:32
『文字列の長さが同じとき,先頭から文字の大小を比較し,その文字が小さいほうが,
文字列として小さいとする.文字列の長さが同じで全ての文字が等しいとき,二つの文
字列は等しい.
文字の大小順序:
0 < 1 < ... < 9 < a < b < … < z < A< B < ... < Z
文字列大小例: "abc" < "abd", "ab" < "abc", "a" < "aaa"』という課題で下のような関数を作ったのですがうまくいきません。
どこがおかしいのか教えてください。
void bubble(char p[/url][NUM],int n){
int i,j,k,m;
int len[num];
char temp[NUM];
for(i=0;i<n;i++){
len=strlen(p);
}
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(len[j]>len[j+1]){
strcpy(temp,p[j]);
strcpy(p[j],p[j+1]);
strcpy(p[j+1],temp);
m=len[j];
len[j]=len[j+1];
len[j+1]=m;
}
}
}
for(i=0;i<n;i++){
for(j=n-1;j>i;j--){
if(len[j]==len[j-1]){
k=strcmp(p[j],p[j-1]);
if(k<0){
strcpy(temp,p[j]);
strcpy(p[j],p[j-1]);
strcpy(p[j-1],temp);
}
}
}
}
for(i=0;i<n;i++){
printf(" %s\n",p);
}
printf("\n");
}
文字列として小さいとする.文字列の長さが同じで全ての文字が等しいとき,二つの文
字列は等しい.
文字の大小順序:
0 < 1 < ... < 9 < a < b < … < z < A< B < ... < Z
文字列大小例: "abc" < "abd", "ab" < "abc", "a" < "aaa"』という課題で下のような関数を作ったのですがうまくいきません。
どこがおかしいのか教えてください。
void bubble(char p[/url][NUM],int n){
int i,j,k,m;
int len[num];
char temp[NUM];
for(i=0;i<n;i++){
len=strlen(p);
}
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(len[j]>len[j+1]){
strcpy(temp,p[j]);
strcpy(p[j],p[j+1]);
strcpy(p[j+1],temp);
m=len[j];
len[j]=len[j+1];
len[j+1]=m;
}
}
}
for(i=0;i<n;i++){
for(j=n-1;j>i;j--){
if(len[j]==len[j-1]){
k=strcmp(p[j],p[j-1]);
if(k<0){
strcpy(temp,p[j]);
strcpy(p[j],p[j-1]);
strcpy(p[j-1],temp);
}
}
}
}
for(i=0;i<n;i++){
printf(" %s\n",p);
}
printf("\n");
}