• 締切済み

C言語 ソートについて

プログラミング初心者です #include <stdbool.h> #include <stdio.h> void swap(char *a, char *b) { } bool is_at(char c) { } void justify(char line[], int n) { } int main(void) { char line[] = "a@b@@@c@@d@@@ef@@g"; size_t n = sizeof(line) - 1; justify(line, n); printf("%s\n", line); return 0; } 実行結果 abcdefg@@@@@@@@@@@ 上の雛形を用いてような文字列lineに含まれる@以外の文字を前に詰めていく。 ただし配列lineの要素を入れ替えること という問題なのですがいまいちよくわからないので答えを教えていただけると嬉しいです

みんなの回答

回答No.2

補足です。 >n-1までやる事 と書いたのは、バブルソートだと思ったからで、 先頭に詰めるだけなら、普通のソートなので nまで回してOKです。 バブルソートとは、 dcba -> abcd これも同時にやると思ったという、 問題文の解釈ミスという意味になります。 全部を「小さい順」アルファベットにも順番があるので。 それもやるなら、バブルソートですが、 そんな条件はないので、これは不要です。

すると、全ての回答が全文表示されます。
回答No.1

void swap(char *a, char *b) { } こちらは、入れ替える関数をイメージしてるようなので、 *a = *a + *b; *b = *a - *b; *a = *a - *b; こんだけかな? bool is_at(char c) { } これもしかして、atってのが@を意味している? ってことであれば、 return (c=='@'? true:false); 後は、 void justify(char line[], int n) { } こいつで、is_atを満たさない物をswapに回す。 ってのをn-1までやる事、nまでやったら メモリオーバーフローします。 テストなどだと、解答はまずいので、 回答で止めておきますが、 上に書いたことだけ守れば簡単に解決しますよ。

すると、全ての回答が全文表示されます。
このQ&Aのポイント
  • 購入製品(いきなりPDF to Data Ver.5/宛名職人 Ver.29など)を使用しているWindows11のパソコンで、おまかせ全バックアップの設定保存場所が選択できない問題が発生しています。プログラムの修正や再インストールを試しましたが、改善されません。
  • おまかせ全バックアップの設定保存場所が選択できない問題が発生しています。使用している製品はいきなりPDF to Data Ver.5/宛名職人 Ver.29で、パソコンのOSはWindows11です。プログラムの修正や再インストールを試しましたが、問題は解決しませんでした。
  • ソースネクスト株式会社の製品であるいきなりPDF to Data Ver.5/宛名職人 Ver.29を使用しているWindows11のパソコンで、おまかせ全バックアップの設定保存場所が選択できない問題が発生しています。プログラムの修正や再インストールを試しましたが、問題は解決されません。
回答を見る

専門家に質問してみよう