ページ 11

この問題が難しすぎてわかりません。

Posted: 2009年1月25日(日) 21:17
by サッピ♪
何か昔の問題集を見ていたら、
1つだけよくわからないのがありました。
それにヒントを下さい。
最終的には答えも…。

(5)
この後にあるプログラムの中の「■■■■」の部分に必要なソースを記述して、
文字列"fea","aba","abx","cad","aca"をアルファベッドの早い順に並べるプロ
グラムを完成させなさい。 (aba,abx,aca,cad,feaの順)
char型の二次元配列を用いること。配列の中で整列する。
また、■■■■の部分は同じ記述になるとは限らない。
ここからプログラム
#include <stdio.h>
#include <string.h>
void d_sort(char str[/url][6]);
int main(void)
{
 char str[5][6]={"fea","aba","abx","cad","aca"};
 int i;

 printf("整列前\n");
 for(i = 0 ; i < 5 ; i ++)
    {
    printf("%s ",str);
    }
 printf("\n\n");
 d_sort(str);
 printf("\n\n整列後\n");
 for(i = 0 ; i < 5 ; i ++)
    {
    printf("%s ",str);
    }

 printf("\n");

 return 0;
 }
 void d_sort(char str[/url][6]) 
 {
 int i,j,k=0;
 int cmp;
 char buf[32]; 
 for(i = 0 ; i < 5-1 ; i++) 
   {
    for(j = 5-1 ; j > i ; j--) 
      {
       cmp = strcmp(str[j], str[j-1]); 
       if(cmp < 0)
         { 
         ■■■■; 
         ■■■■;
         ■■■■;
         }
      }
  }
return ;
}

ここまでプログラム

Re:この問題が難しすぎてわかりません。

Posted: 2009年1月25日(日) 22:16
by バブルソートに
ついて、調べましょう。

Re:問題が難しすぎてわかりません。

Posted: 2009年1月26日(月) 10:40
by abc
まず1番若いやつを探しましょう。例だとabaのやつ。
まず1文字目のaを他の1文字目と比べもし、aより若いやつがあったらそれが比較対照になり、
もし同じなら2文字目を比較し、って感じで1番若いやつをみつけ、2番目3番目とやっていったら、
ソートプログラムができるかなぁーたぶん笑

Re:この問題が難しすぎてわかりません。

Posted: 2009年1月26日(月) 12:42
by 初級者
ヒントをくださいというのは方便に過ぎず、
結局は答え「だけ」がほしいのではありませんか?

自分で調べたり考えたりせずに答えだけ欲しているならば、
誰からも支援は得られないでしょう。

Re:ちょっと忙しくなってしまって返事ができませんでした。

Posted: 2009年1月27日(火) 12:04
by サッピ♪
【aより若いやつがあったらそれが比較対照になり、
もし同じなら2文字目を比較し1番若いやつをみつけ、
2番目3番目とやっていったら】
というのは
a>aba,abx,cad,aca
*a>aba,abx,cad,aca
**a>aba,abx,cad,aca
ということですか?

【ヒントをくださいというのは方便に過ぎず、
結局は答え「だけ」がほしいのではありませんか? 】
すみません、投稿した後にちょっと他の事で立て込んでしまって
なかんか返事を返すことができませんでした。

Re:ちょっと忙しくなってしまって返事ができませんでした。

Posted: 2009年1月27日(火) 12:31
by non
サッピ♪さんが質問されている意味がわかりません。
まず、前にも書いてあったようにバブルソートについて調べて、数字の並べ替えだったら
どうすればよいか調べてください。その上で、質問してください。

Re:ちょっと忙しくなってしまって返事ができませんでした。

Posted: 2009年1月27日(火) 13:09
by Haru
ふとした疑問なのですが・・・
昔の問題集には解答がついてないのでしょうか?

Re:ちょっと忙しくなってしまって返事ができませんでした。

Posted: 2009年1月27日(火) 13:40
by たかぎ
答えが欲しいだけなら(そして動けばよいだけなら)...


} d_sort2(str); return; } } } int compare(const void *a, const void *b) { const char (*lhs)[6] = a

const char (*rhs)[6] = b; return strcmp(*lhs, *rhs); } d_sort2(str) char str[5][6]

{ { { { extern void qsort(void*, size_t, size_t, int(*)(const void*, const void*)); qsort(str, 5, 6, &compare)

↑の三つをそれぞれの■■■■に当てはめてください。

Re:ちょっと忙しくなってしまって返事ができませんでした。

Posted: 2009年1月27日(火) 15:40
by サッピ♪
【問題集には解答がついてないのでしょうか?】
問題集の回答がないので、解説をみたりすることができません。

【答えが欲しいだけなら】
答えと解説を見て、
ちょっとづつエラーをなくしていこうと思っています。

Re:ちょっと忙しくなってしまって返事ができませんでした。

Posted: 2009年1月27日(火) 18:40
by やそ
問題投げっぱなしの問題集って問題アリです(笑)
いくら昔のだからってねえ^^;

サッピ♪ さんはバブルソート理解できました?

概念を理解してもらわないと、解説するほうはものすごく大変なのです^^;

Re:ちょっと忙しくなってしまって返事ができませんでした。

Posted: 2009年1月27日(火) 22:01
by Dixq (管理人)
解答の無い問題集はあまり見たことないですが、参考書についてる問題には時々そういうのありますね。
しかし、その問題そのものの解答じゃないとダメですか?
例えば、今回の場合、文字コードやソートプログラムについての知識が必要だと思うので、
まずは分解して考えた方がいいように思います。

・バラバラの数字を代入した配列を昇順に並び替えるプログラム

・文字列に入っている各文字の文字コードを表示するプログラム

これが出来たら、

・文字列を辞書順に並び替えるプログラム

を作って練習し、最後に問題を解いてみてはどうでしょう。
その中で、どこがわからないのか具体的に教えていただければアドバイスがし易いかと思います。

Re:ちょっと忙しくなってしまって返事ができませんでした。

Posted: 2009年1月28日(水) 13:16
by サッピ♪
【問題投げっぱなしの問題集って問題アリです】
昔はあったんですよ(笑)

【バブルソート理解できました? 】
データを並べかえるソートで、基本的なアルゴのひとつですよね。