\documentclass[xelatex,a4paper,11pt,ja=standard]{bxjsarticle}

\usepackage{tex/preamble}
\usepackage{tex/simple-title}
\usepackage{subcaption}

\reportauthor{柴田健琉}
\reporttitle{情報処理2 - 前期第12回課題}
\reportdate{2026年}{07月}{07日}
\turnindate{2026年}{07月}{12日}

\begin{document}
    \simpletitle

    \section{はじめに}

    この課題のプログラムは以下の環境での動作が確認されている.

    \begin{itemize}
        \item{OS: NixOS 26.05 Yarara, Linux 7.1.2 x86\_64}
        \item{CC: GCC 15.2.0}
        \item{CFLAGS: \texttt{-g -O1 -Wall -Wpedantic}}
    \end{itemize}

    \section{課題1}

    授業資料内のサンプルコードに平均点数のエントリーを追加する.

    \lstinputlisting[language=C]{./src/cls12/a1.c}

    \subsection{実行結果}

    \begin{figure}[tbh]
        \centering
        \includegraphics[width=12cm]{./assets/cls12-a1.png}
        \caption{課題1の実行結果}
    \end{figure}

    \subsection{処理の流れ}

    \begin{enumerate}
        \item{構造体の配列\texttt{students}を宣言・定義する}
        \item{\texttt{students}に対し, それぞれの要素の\texttt{english}, \texttt{mathematics}, \texttt{japanese}エントリーから平均を求め, \texttt{average}エントリーに代入}
        \item{\texttt{students}の各要素の全エントリーを所定の書式に合わせて標準出力に表示させる}
    \end{enumerate}

    \subsection{書く際の難点}

    ただ構造体にエントリーを1つ追加し, 平均値の計算を追加しただけなので特筆すべき難点はない.

    \subsection{想定されるバグ}

    浮動小数点数の誤差が考えられるが, 大抵は最小位の桁での誤差であり, また, 書式で小数点以下2桁しか表示しないので, 表示される数値に大きな誤差が生まれることはほとんど無い.

    \newpage

    \section{課題2}

    課題1から平均点数を元に"A"から"D"までランク付けを行い, それぞれのランクの人数を記録する.

    \lstinputlisting[language=C]{./src/cls12/a2.c}

    \subsection{実行結果}

    \begin{figure}[tbh]
        \centering
        \begin{minipage}[t]{0.95\textwidth}
            \centering
            \includegraphics[width=12cm]{./assets/cls12-a2-1.png}
            \subcaption{Without \texttt{-D ALT\_DATA} Option}
        \end{minipage}
        \begin{minipage}[t]{0.95\textwidth}
            \centering
            \includegraphics[width=12cm]{./assets/cls12-a2-2.png}
            \subcaption{With \texttt{-D ALT\_DATA} Option}
        \end{minipage}
        \caption{課題2の実行結果}
    \end{figure}

    \subsection{処理の流れ}

    \begin{enumerate}
        \item{構造体の配列\texttt{students}を宣言・定義する}
        \item{\texttt{students}に対し, それぞれの要素の\texttt{english}, \texttt{mathematics}, \texttt{japanese}エントリーから平均を求め, \texttt{average}エントリーに代入}
        \item{各ランクに属する人数を記録する整数型配列\texttt{grades}を宣言し, 0で初期化する}
        \item{\texttt{students}に対し, 各要素の\texttt{average}エントリーの値の範囲を条件分岐で確認し, 文字型変数\texttt{grade}に対応するランクを代入し, \texttt{grades}の対応要素をインクリメントする}
        \item{\texttt{students}の各要素の全エントリーとランクを所定の書式に合わせて標準出力に表示させる}
        \item{\texttt{grades}の各要素を所定の書式に合わせて標準出力に表示させる}
    \end{enumerate}

    \subsection{書く際の難点}

    課題1に分岐処理を追加するだけなので特筆すべき難点はない.

    \subsection{想定されるバグ}

    課題1同
\end{document}
