# C言語学習 ## このレポジトリについて このレポジトリは私がC言語学習で躓いたところを復習を兼ねて作成したプログラムになります。 もし同じように躓いた方がいましたら、確認してみると参考になるかもしれません。 ただし、以下のことに注意してください。 - 基本的な文法がわかること - 配列の渡し方がわかること - 構造体の定義の仕方がわかること - アルゴリズムを理解していること - コメントは基本ないこと ## コンパイル GCCを使用してコンパイルしています。 基本的には引数を特に指定してません。 作業環境により、GCCのバージョンが違うためここで明記しませんが、どのバージョンでも動くように作成しているつもりです。 `gcc quick_sort.c -o quick_sort` ### 構造体とポインタ 構造体とポインタについての学習 2022/04/09 #### 処理内容 1. 生徒配列を定義する 2. 生徒の各科目の点数を初期化する 3. ランダムに点数を生成する 4. 科目ごとの平均点、最大点、最低点を標準出力する ### クイックソート 数値配列のクイックソートを行う 2022/04/22 q_sort 2022/04/26 quick_sort #### 処理内容 1. 配列と、左端(0)、右端(配列の長さ)を渡す 2. 左端が右端以上であるならピボットを取得する 3. ピボット(左端)のデータより小さければiをすすめる 4. ピボットのデータより大きければjを戻す 5. 中央値まで求めたらそのデータを比較し、入れ替える 6. i が j 以下であればループを行う 7. ピボットとjを入れ替える 8. ピボットより小さいデータをクイックソートする 9. ピボットより大きいデータをクイックソートする ### ダイヤモンドアート コマンドラインで指定されたサイズのダイヤモンドを生成する 2022/04/27 diamond, diamond2, diamond3 #### 考え方 1. 一度にすべてを出力することはできないので、処理の分割を行う 2. まず文字列として出力することを考えると、一行ずつ出力することができる 3. 次にダイヤモンドの形にするには左と右で分割して考えたほうが簡単だとわかる 4. 以上を踏まえ、上左側、上右側、下左側、下右側で処理を分割する 5. 共通化できる部分を関数化する #### 処理内容 1. コマンドラインの入力を確認する 2. 出力関数を呼び出す 3. 上から順に一行ずつ再起地点まで出力する 4. 左側を出力する 5. 右側を出力する 6. 再起地点まで来たら降順に上から順に出力する 7. 左側を出力する 8. 右側を出力する # Copyright Copyright (c) 2022 kema All Rights Reserved.