diff --git a/assets/cls05-a1.png b/assets/cls05-a1.png new file mode 100644 index 0000000..ec5b349 Binary files /dev/null and b/assets/cls05-a1.png differ diff --git a/assets/cls05-a2.png b/assets/cls05-a2.png new file mode 100644 index 0000000..9416dd2 Binary files /dev/null and b/assets/cls05-a2.png differ diff --git a/assets/cls05-a3.png b/assets/cls05-a3.png new file mode 100644 index 0000000..27481ae Binary files /dev/null and b/assets/cls05-a3.png differ diff --git a/out/report-cls05.pdf b/out/report-cls05.pdf new file mode 100644 index 0000000..3849212 Binary files /dev/null and b/out/report-cls05.pdf differ diff --git a/out/report-cls05.synctex.gz b/out/report-cls05.synctex.gz new file mode 100644 index 0000000..48ec074 Binary files /dev/null and b/out/report-cls05.synctex.gz differ diff --git a/report-cls05.tex b/report-cls05.tex new file mode 100644 index 0000000..2d574f8 --- /dev/null +++ b/report-cls05.tex @@ -0,0 +1,68 @@ +\documentclass[xelatex,a4paper,11pt,ja=standard]{bxjsarticle} + +\usepackage{tex/preamble} +\usepackage{tex/simple-title} + +\reportauthor{柴田健琉} +\reporttitle{情報処理2 - 前期第5回課題} +\reportdate{2026年}{05月}{21日} +\turnindate{2026年}{05月}{21日} + +\begin{document} + \simpletitle{} + + \section{はじめに} + + この課題のプログラムは以下の環境での動作が確認されている: + + \begin{itemize} + \item {OS: NixOS 25.11 Xantusia, Linux 7.0.6 x86\_64} + \item {CC: GCC 15.2.0} + \item {CFLAGS: \texttt{-g -O1 -Wall -Wpedantic}} + \item {ファイルエンコーディング: UTF-8} + \end{itemize} + + \section{課題1} + + 与えられた文字列内を探索し,特定の文字の最初に表れる添字を返す関数\texttt{str\_char}を作成する, + + \lstinputlisting[language=C,title={課題1のプログラム}]{./src/cls05/a1.c} + + \subsection{実行結果} + + \begin{figure}[tbh] + \centering + \includegraphics[width=12cm]{./assets/cls05-a1.png} + \caption{課題1の実行結果} + \end{figure} + + \section{課題2} + + 入力された文字列の文字と文字コードを表示するプログラム,なお文字列の入力には\texttt{getchar}関数を用いること. + + \lstinputlisting[language=C,title={課題2のプログラム}]{./src/cls05/a2.c} + + \subsection{実行結果} + + \begin{figure}[tbh] + \centering + \includegraphics[width=12cm]{./assets/cls05-a2.png} + \caption{課題2の実行結果} + \end{figure} + + \section{課題3} + + 入力した文字列の並びを反転させる関数\texttt{rev\_string}を作成する. + + \lstinputlisting[language=C,title={課題3のプログラム}]{./src/cls05/a3.c} + + \newpage + + \subsection{実行結果} + + \begin{figure}[tbh] + \centering + \includegraphics[width=12cm]{./assets/cls05-a3.png} + \caption{課題3のプログラム} + \end{figure} +\end{document} diff --git a/src/cls05/Makefile b/src/cls05/Makefile new file mode 100644 index 0000000..388929e --- /dev/null +++ b/src/cls05/Makefile @@ -0,0 +1,14 @@ +include ../common.mk + +PROJECT_NAME:=cls05 + +TGTS:=$(patsubst %.c,%,$(wildcard *.c)) + +all: $(TGTS) + +%: %.c + @mkdir -p $(BUILD_PATH)/$(PROJECT_NAME) + $(CC) $(CFLAGS) -I. $^ -o $(BUILD_PATH)/$(PROJECT_NAME)/$@ + +clean: + $(RM) -drf $(BUILD_PATH)/$(PROJECT_NAME) diff --git a/src/cls05/a1.c b/src/cls05/a1.c new file mode 100644 index 0000000..e8202a8 --- /dev/null +++ b/src/cls05/a1.c @@ -0,0 +1,38 @@ +#include + +#define BUFF_SZ 256 + +int str_char(const char s[], int c) { + int idx = 0; + while (s[idx] != '\0') { + if (s[idx] == (char)c) { + return idx + 1; + } + idx++; + } + + return -1; +} + +int main(void) { + char buff[BUFF_SZ] = {0}; + char query = 0; + + printf("Input String: "); + fgets(buff, BUFF_SZ, stdin); + + printf("Input Search Character: "); + scanf("%c", &query); + + printf("%c, %s\n", query, buff); + + int ret = str_char(buff, query); + if (ret != -1) { + printf("Found %c at %d\n", query, ret); + } else { + printf("Queried character not found.\n"); + } + + return 0; +} + diff --git a/src/cls05/a2.c b/src/cls05/a2.c new file mode 100644 index 0000000..1d68e32 --- /dev/null +++ b/src/cls05/a2.c @@ -0,0 +1,25 @@ +#include + +#define BUFF_SZ 256 + +int main(void) { + char buff[BUFF_SZ] = {0}; + int cnt = 0; + + printf("Input String: "); + while ((buff[cnt] = getchar()) != '\n') { + cnt++; + }; + buff[cnt] = '\0'; + + int i = 0; + while (buff[i] != '\0') { + printf( + "Char: %c, ASCII Code: 0x%X (%d)\n", + buff[i], (int)buff[i], (int)buff[i] + ); + i++; + } + + return 0; +} diff --git a/src/cls05/a3.c b/src/cls05/a3.c new file mode 100644 index 0000000..99b495c --- /dev/null +++ b/src/cls05/a3.c @@ -0,0 +1,34 @@ +#include + +#define BUFF_SZ 256 + +void rev_string(char s[]) { + int str_sz = 0; + char tmp = 0; + + do { + str_sz++; + } while (s[str_sz] != '\0' && str_sz < BUFF_SZ); + str_sz--; // remove null terminater from count + + for (int i = 0; i < str_sz/2; i++) { + tmp = s[str_sz - 1 - i]; + s[str_sz - 1 - i] = s[i]; + s[i] = tmp; + } +} + +int main(void) { + char buff[BUFF_SZ] = {0}; + + printf("Input String: "); + fgets(buff, BUFF_SZ, stdin); + + printf("Got: %s\n", buff); + + rev_string(buff); + + printf("Rev: %s\n", buff); + + return 0; +}