プロが教える店舗&オフィスのセキュリティ対策術

例えば、
"taro", "jiro", "saburo"をアルファベッド順に並び替えて、画面に表示するプログラムを作りたいとすれば、どんなプログラムができるでしょうか?
学校の宿題でこの種の問題が出たのですが、さっぱり分からず困っています。

宜しくお願いします。

A 回答 (6件)

何がどうさっぱりわからないのでしょうか?



少しも考えずに宿題を丸投げする質問は禁止ですよ。
「○○と××について△△と思う。」
など具体的に質問しましょう。

で、学校の宿題なら
・宿題が正解すること
よりも
・問題について考えること
が大切なんだから、自分なりの答えを出せばいいのでは?

単に「正解」を提出したいだけなら、授業前にできた友達のノート写せばいいでしょ。

この回答への補足

ええと、分からない部分を詳しく言うなら、並び替える部分のプログラムが分からないのです。
数字なら大小比較で並び替えることができると思いますが、文字には大小がないのでさっぱりわかりません・・・。
とりあえず、丸投げしているわけではないので、ヒントだけでも教えてください。
配列の仕方はわかっているので、その先に進めるきっかけを何か下さい。
それでは、お願いしますm(__)m

補足日時:2005/05/21 13:38
    • good
    • 0

えーとですね。


文字コードが…
とか
文字の大小比較をする関数が…
とかいう話はしないことにします。
(おそらくそういう話の宿題じゃないと思うので…)

>文字には大小がないので…
で、あれば、文字に対して大小比較ができるように数字を結びつけてあげればいいんですよ。

例えば…
比較用の文字列の配列を作っておく
その配列には
比較用配列[0] = 'a';
比較用配列[1] = 'b';

のようにすると、「文字(配列の中身)」と「数字(配列のINDEX)」が結びついたので大小比較ができますよね?
    • good
    • 0

使用する言語はなんでしょう?

この回答への補足

すいません、C言語です。

補足日時:2005/05/21 16:01
    • good
    • 0

文字にもちゃんと大小がありますよ。


参照URLをごらんあれ。
 #No.2の方が気を使ってくれていますが、Cなら避けて通れない道ですので・・・

具体例を挙げると、
"taro"の場合は {0x74,0x61,0x72,0x6f,0x00}
"jiro"の場合は {0x6a,0x69,0x72,0x6f,0x00}
 ※ taro[0] == 0x74   jiro[2] == 0x72

という風にchar配列に入力されています。
はい、あとは簡単ですね。

参考URL:http://e-words.jp/p/r-ascii.html
    • good
    • 0

>並び替える部分の…文字には大小がないので


string.h の strcmpを使って文字列の順序(辞書順による大小比較)ができます。
strcmp("taro","jiro")の時
"taro">"jiro"なので関数の値はプラスになります。
つまり、
if(strcmp(data[i],data[j])>0){
/* data[i]がdata[j]より大きかった時の処理 */
}
というようなやり方で、大小の判定と処理ができます。
ちなみに
strcmp(const char *s,const char *t)

s>tの時>0
s==tの時==0
s<tの時<0
です。
    • good
    • 0

サンプル、並び替える部分は、かなりムダがあるので自分のヤツに置き換えて下さい。

というか、qsortを使えばいいけど・
#if 0
"taro", "jiro", "saburo"をアルファベッド順に並び替えて、画面に表示するプログラム
#endif

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

void main(void){
char *data[]={"taro", "jiro", "saburo"};
char *wk;
int i,flag;
int arraySize = sizeof(data)/sizeof(char*);


do{
flag=0;
for(i=0;i<arraySize-1;i++){
if(strcmp(data[i],data[i+1])>0){
wk =data[i];
data[i] =data[i+1];
data[i+1]=wk;
flag=1;
}
}
}while(flag);
for(i=0;i<arraySize;i++)
printf("%s\n",data[i]);
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!