#include <stdio.h>
#include <string.h>
#define NMAX 10
int main(void)
{
char *p[/url] = { "one", "two", "three", "four", "five",
"six", "seven", "eight", "nine", "ten"
};
char *temp;
int i, j, min;
for (i=0; i<NMAX-1; i++) {
/* find the smallest remaining string */
min = i;
for (j = i+1; j<NMAX; j++) {
/* comparing two strings */
if (strcmp(p[min], p[j]) > 0) {
min = j;
}
}
● *temp=*p;
● ;
● ;
}
for (i=0; i<NMAX; i++)
puts(p);
return 0;
}
アルファベットの早い順にソートするプログラムで悩んでいます。
●の部分のみを変更します。
出力で、eight,five,four,nine,one,seven,six,ten,three,twoの順番が目標です。
tempはpの文字を入れる役割だと思うのですが…
アルファベット順のソート
Re:アルファベット順のソート
strcmpで比較した最小の値をtempに代入していくのだろうと考えてますが、
2回目以降でそれ以前に代入した小さい値を除いて最小を調べていく仕組み(?)が良く分かりません。
2回目以降でそれ以前に代入した小さい値を除いて最小を調べていく仕組み(?)が良く分かりません。
Re:アルファベット順のソート
自己解決出来ました。わざわざ質問したのにすみません…
● temp=*(p+min);
● *(p+min)=*(p+i);
● *(p+i)=temp;
● temp=*(p+min);
● *(p+min)=*(p+i);
● *(p+i)=temp;