大至急お願いします(文字列ソートについて)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
レッド

大至急お願いします(文字列ソートについて)

#1

投稿記事 by レッド » 16年前

・テーマ 文字列のソート

・プログラム説明
2次元の文字配列bufferに文字列をキーボードより入力し、入力終了後文字列の昇順にソートして出力する。
ただし、終了条件はend または END が入力された時とする。

・補足
文字列の比較には関数 strcmp を使用するとよい。
ただし、string h を #include すること。

・出力例
データ入力
buffer[0]=ebcde
buffer[1]=bcde
buffer[2]=abcd
buffer[3]=END

データ出力
abcd
bcde
edcde

上記が問題です。よろしくお願いします。

/* システム 1ネン 31バン (**個人名が書かれていたので管理人が削除しました**) */
/* EX110                                               */
/* モジレツノソート                                    */

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

void main()
{
       char buffer[256][256], w[256];
       int i,j, ia;

       i = 0;
       j = 0;

       printf(データ入力);
       printf(\nbuffer[%d]=, i);
       gets(buffer);
       while(strcmp(buffer, END) != 0 && strcmp(buffer, end) != 0){
               i++;
               j++;
               printf(buffer[%d]=, i);
               gets(buffer);
       }

       for(j = j - 1; j > 0 && ia != 0; j--){
               ia = 0;
               for(i = 0; i < j; i++){
                       if(strcmp(buffer, buffer[i + 1]) > 0){
                               strcpy(w,buffer);
                               strcpy(buffer,buffer[i + 1]);
                               strcpy(buffer[i + 1],w);
                               ia = 1;
                       }
               }
       }
       printf(\n);
       puts(データ出力);
       for(i = 0;strcmp(buffer, END) != 0 && strcmp(buffer, end) != 0; i++){
               puts(buffer);
       }
       puts();
}


これが私の作ったプログラムなのですが、もっと簡単にできませんか?
------------------------------------------------------------
 

(理由の提示無く突然記事が削除された為、管理人により記事は元に戻されました)

バグ

Re:大至急お願いします

#2

投稿記事 by バグ » 16年前

iaの初期化を忘れてませんか?

レッド

Re:大至急お願いします

#3

投稿記事 by レッド » 16年前

確かに忘れています。
でも、それでも動きました。

組木紙織

Re:大至急お願いします

#4

投稿記事 by 組木紙織 » 16年前

質問の意味が良く分からないです。

簡単にというのは、もっと短いコードで書いて欲しいという意味ですか?
想定される出力結果が出ないのは置いといて、無駄に長くなく、大体よさげなコードを書いているので
コードを短くする必要はないと思います。

あとは想定される出力結果に合わせてあげればいいのでは。


#とりあえずインデントがそろってないのでコードが読みにくいです。

組木紙織

Re:大至急お願いします

#5

投稿記事 by 組木紙織 » 16年前

あら、いつの間にか質問文が消えてる。

質問をした意図と理由は何となく見当がつくので、的確に質問をしてくれれば、
解に繋がる回答をしようと思っていたのですが。。。

Dixq (管理人)

Re:大至急お願いします

#6

投稿記事 by Dixq (管理人) » 16年前

質問文を理由無く消す事は規約違反です。
勝手な理由で質問文を消す事は回答してくれた人に大変失礼です。

また、記事は投稿、修正、された時点で全てこちらにバックアップが保存されますので、記事は消しても戻せます。
規約に「明確な理由無く削除した場合は元に戻す」とさせていただいています。

もし何か不都合がある場合はその理由を教えて下さい。
何も理由の提示が無い場合は元に戻します。

conio

Re:大至急お願いします

#7

投稿記事 by conio » 16年前

文字列に関する質問でしたが、いつの間にか変わってますね。
(一応自分なりにプログラムを考えていた途中でした)
先のプログラムへの意見:初期化は特別な事情が無い限り、した方がいいです。

とりあえず、解決したのならば、「解決!」にするか、何らかのコメントを残すべきかな、と。
「ああ」って何でしょう?
インデントが揃っておらず、プログラムが読みにくい、等の指摘が気分を害したのでしょうか?

閉鎖

“C言語何でも質問掲示板” へ戻る