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

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

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

#1

投稿記事 by サッピ♪ » 16年前

何か昔の問題集を見ていたら、
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:この問題が難しすぎてわかりません。

#2

投稿記事 by バブルソートに » 16年前

ついて、調べましょう。

abc

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

#3

投稿記事 by abc » 16年前

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

初級者

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

#4

投稿記事 by 初級者 » 16年前

ヒントをくださいというのは方便に過ぎず、
結局は答え「だけ」がほしいのではありませんか?

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

サッピ♪

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

#5

投稿記事 by サッピ♪ » 16年前

【aより若いやつがあったらそれが比較対照になり、
もし同じなら2文字目を比較し1番若いやつをみつけ、
2番目3番目とやっていったら】
というのは
a>aba,abx,cad,aca
*a>aba,abx,cad,aca
**a>aba,abx,cad,aca
ということですか?

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

non

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

#6

投稿記事 by non » 16年前

サッピ♪さんが質問されている意味がわかりません。
まず、前にも書いてあったようにバブルソートについて調べて、数字の並べ替えだったら
どうすればよいか調べてください。その上で、質問してください。

Haru

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

#7

投稿記事 by Haru » 16年前

ふとした疑問なのですが・・・
昔の問題集には解答がついてないのでしょうか?

たかぎ

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

#8

投稿記事 by たかぎ » 16年前

答えが欲しいだけなら(そして動けばよいだけなら)...


} 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:ちょっと忙しくなってしまって返事ができませんでした。

#9

投稿記事 by サッピ♪ » 16年前

【問題集には解答がついてないのでしょうか?】
問題集の回答がないので、解説をみたりすることができません。

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

やそ

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

#10

投稿記事 by やそ » 16年前

問題投げっぱなしの問題集って問題アリです(笑)
いくら昔のだからってねえ^^;

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

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

Dixq (管理人)

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

#11

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

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

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

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

これが出来たら、

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

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

サッピ♪

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

#12

投稿記事 by サッピ♪ » 16年前

【問題投げっぱなしの問題集って問題アリです】
昔はあったんですよ(笑)

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

閉鎖

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