ページ 11

アルファベット順のソート

Posted: 2010年6月20日(日) 17:49
by タマ
#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:アルファベット順のソート

Posted: 2010年6月20日(日) 17:58
by シエル
どこまでが分かって、どこが分からないのですか?

Re:アルファベット順のソート

Posted: 2010年6月20日(日) 18:29
by タマ
strcmpで比較した最小の値をtempに代入していくのだろうと考えてますが、
2回目以降でそれ以前に代入した小さい値を除いて最小を調べていく仕組み(?)が良く分かりません。

Re:アルファベット順のソート

Posted: 2010年6月20日(日) 18:54
by シエル
これって何かの課題の問題ですか?
それとも自分が一から考えて書いたプログラムですか?

Re:アルファベット順のソート

Posted: 2010年6月20日(日) 19:18
by 組木紙織
整数のソートはできますか?
出来るならコードを見せてください。

Re:アルファベット順のソート

Posted: 2010年6月20日(日) 20:40
by タマ
自己解決出来ました。わざわざ質問したのにすみません…

● temp=*(p+min);
● *(p+min)=*(p+i);
● *(p+i)=temp;