質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.38%

sage

解決済

回答 8

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,088

ghosts

score 11

///////////////////////////////////////////////////////////////////////////////////
しめます。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2016/05/30 23:09

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • otn

    2016/05/31 00:12

    「この問題文ですら何を言ってるのか、何をしたらいいのかまったくわからない状態です。」ということであれば、「私には無理です」とギブアップするのが正しいです。

    キャンセル

  • 退会済みユーザー

    2016/05/31 15:16

    他のユーザから「意図的に内容が抹消された質問」という指摘を受けました
    解決後に編集機能を用いて質問内容を改変し関係のない内容にしたり、内容を削除する行為は禁止しています。
    投稿していただいた質問は、後に他の誰かが困ったときに助けになる情報資産になると考えるからです。
    「質問を編集する」ボタンから編集を行い、他のユーザにも質問内容が見えるように修正してください。

回答 8

+4

この問題文ですら何を言ってるのか

プログラミングより国語を勉強したほうが良いのかもしれませんね。学習の基礎ができてないと思われるので、小中高の算数や数学の問題を解くことからやり直したほうが良いのでは?

と、まあ突き放すのも何なのでどう考えたら良いのかヒントだけ。
まずは問題文。

  1. 「標準入力」は理解してますか?してないのなら調べましょう。
  2. 「乱数で生成」乱数の生成の仕方はわかりますか?わからないのなら調べましょう。
  3. 「クイックソート」は理解してますか?してないのなら調べましょう。
  4. 「再帰的呼び出し」は理解してますか?してないのなら調べましょう。

上記の4つをクリアしてからでないとこの問題をこなすことはできません。
4つが理解できたということは、取り敢えず問題文についてはOKですよね。
じゃあ、次はC言語のプログラムの基本構成です。main()関数やサブルーチンは学習しましたよね?
プログラムがどのように実行されるかも理解してますよね?
であれば、プログラムは作れるはずです。あとは数学の問題を解くの同じです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

プログラミングの技術において、調べてわからないことは結構少ないですよ。
英語のページも読めるならなおさらです。
調べ方がわからないのであれば、以下の感じで調べられます。

【標準入力について】

  • 検索キーワード
    c言語 標準入力
  • 使えそうなサイト
    http://www.itsenka.com/contents/development/c/standardio.html

【範囲指定の乱数について】

  • 検索キーワード
    c言語 乱数 範囲
  • 使えそうなサイト
    http://linuxserver.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/c-%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/rand

【クイックソートについて】

  • 検索キーワード
    c言語 クイックソート 再帰
  • 使えそうなサイト
    http://www1.cts.ne.jp/~clab/hsample/Sort/Sort9.html

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

クイックソート
ウィキペディアすごいな。めちゃくちゃ丁寧に書いてあった。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

こんにちは。

・関数の再帰的呼び出しを使う 

この条件は非常に難しいです。再帰呼び出しは永遠に使えない人もいるくらい難しいです。
まして「c言語は本当に苦手で、この問題文ですら何を言ってるのか」の方が1~2週間程度で使えるようになることは「あり得ない」と思いますし、再帰呼び出しより先に学ぶべきことが多数あります。
最後の条件は忘れて解いてみませんか?

以下ヒントです。(gccかclangを使っていると仮定します。もし、Visual Studioならそう言って下さい。)

n個の整数配列 int data[n];(これはVisual Studioでは使えません。)
nは標準入力から与える scanf()関数が使えます。(scanfは流石に知ってますよね?)
n個の整数は乱数で生成する rand()関数が使えます。
クイックソートを用いる qsort()関数が使えます。

お薦めの手順は、下記です。

nを入力する

n個の整数配列を定義する

n個の整数配列に1~100を設定する

n個の整数配列をソートする

ソートした結果を出力する。

途中2箇所程、for文を使います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/30 20:30

    > クイックソートを用いる qsort()関数が使えます。

    気になったので念のため指摘しておきます。
    C標準ライブラリのqsort関数は、アルゴリズムは規定していないのでクイックソートとは限りませんよ。実際にはクイックソートで実装されていることが多いようですが、仕様に明記されていない以上、それを前提とすべきではないと思います。

    キャンセル

  • 2016/05/30 21:53

    catsforepawさん。
    あらら、ググッたらクイックソートとでてきてたので、てっきりそうだと思ってました。
    「glibcのqsort()はクイックソートではない」なのですね。
    http://qnighy.hatenablog.com/entry/20090430/1241054709
    訂正ありがとうございます。

    ghosts_apuさん、すいません。
    提出までの期限が短いようでしたら、クイックソートも断念してqsortを使うしかないかもしれません。逆に、もし2~3週間、この問題に注力できるようでしたら、トライすると力がつきますよ。

    キャンセル

checkベストアンサー

0

まずC言語から離れて、
「数値を標準入力から与える 」とはどういう事か?
「整数は乱数で生成する」とはどういう事か?
「クイックソートを用いる」とは?・・・・

余談:下の2つの条件は、「クイックソートを再起を用いて実装せよ!」と思えてならないのですが・・・

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

まずは出来ているところまでのソースを提示しましょうよ。
丸投げはいかんですよ。

処理としては最初の3つは、その順番通りにすればいいですよね。
問題は再帰呼び出しですが、私には効果的な使いどころが思い浮かびませんでした…。
無理やり使うとしたら、乱数生成のところか、書いてないですが、最後にソート結果を出力するときか…。

--
(訂正)
クイックソートはqsortを使うのではなく、アルゴリズムを自力で作成するということをte2jiさんの回答で気づきました。
私の回答は忘れてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

C言語が苦手というよりロジックやフローチャートの問題でしょう。
どの言語か迷うくらいに言語自体はよく似ていますよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

おそらく学校や訓練機関、もしくは社内での研修中でC言語を勉強中なんだと思います。

であれば、

与えられた教材のこれまでの問題を1から順番に解き直していって、
分からないところを講師役の人に質問する

というのが最速かつ確実な方法だと思いますよ。
現時点ではインターネットで検索しても混乱するだけだと思います。

何らかの理由でそれが出来ないのであれば

  • どういった経緯で勉強しているのか
  • 教材はどのようなものを使っているのか
  • 環境はどのような環境なのか
  • なぜ質問できないのか
  • ここまで解けた問題は何があるか?

くらいまでは質問に盛り込むと、良い回答があるかもしれませんが、
カリキュラムを組んでいる講師以上の教育効果を上げるのは困難でしょうね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.38%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

閲覧数の多いCの質問