diff --git a/assets/cls06-a1.png b/assets/cls06-a1.png new file mode 100644 index 0000000..0ef2a6c Binary files /dev/null and b/assets/cls06-a1.png differ diff --git a/assets/cls06-a2.png b/assets/cls06-a2.png new file mode 100644 index 0000000..6ed5ae0 Binary files /dev/null and b/assets/cls06-a2.png differ diff --git a/out/report-cls06.pdf b/out/report-cls06.pdf new file mode 100644 index 0000000..6212ba4 Binary files /dev/null and b/out/report-cls06.pdf differ diff --git a/out/report-cls06.synctex.gz b/out/report-cls06.synctex.gz new file mode 100644 index 0000000..e2aedca Binary files /dev/null and b/out/report-cls06.synctex.gz differ diff --git a/report-cls06.tex b/report-cls06.tex new file mode 100644 index 0000000..5f92a22 --- /dev/null +++ b/report-cls06.tex @@ -0,0 +1,51 @@ +\documentclass[xelatex,a4paper,11pt,ja=standard]{bxjsarticle} + +\usepackage{tex/preamble} +\usepackage{tex/simple-title} + +\reportauthor{柴田健琉} +\reporttitle{情報処理2 - 前期第6回課題} +\reportdate{2026年}{05月}{25日} +\turnindate{2026年}{05月}{25日} + +\begin{document} + \simpletitle + + \section{はじめに} + + この課題のプログラムは以下の環境での動作が確認されている: + + \begin{itemize} + \item {OS: NixOS 25.11 Xantusia, Linux 7.0.9 x86\_64} + \item {CC: GCC 15.2.0} + \item {CFLAGS: \texttt{-g -O1 -Wall -Wpedantic}} + \end{itemize} + + \section{課題1} + + 入力した文字列\texttt{s}内に特定の文字\texttt{c}の出現回数を返す関数\texttt{str\_chnum}を作成する. + + \lstinputlisting[language=C,title={課題1のプログラム}]{./src/cls06/a1.c} + + \subsection{実行結果} + + \begin{figure}[tbh] + \centering + \includegraphics[width=12cm]{./assets/cls06-a1.png} + \caption{課題1の実行結果} + \end{figure} + + \section{課題2} + + 入力した文字列\texttt{s}を\texttt{n}回連続で出力するサブルーティーン\texttt{put\_stringn}を作成する. + + \lstinputlisting[language=C,title={課題2のプログラム}]{./src/cls06/a2.c} + + \subsection{実行結果} + + \begin{figure}[tbh] + \centering + \includegraphics[width=12cm]{./assets/cls06-a2.png} + \caption{課題2の実行結果} + \end{figure} +\end{document} diff --git a/src/cls06/Makefile b/src/cls06/Makefile new file mode 100644 index 0000000..3dbc04e --- /dev/null +++ b/src/cls06/Makefile @@ -0,0 +1,14 @@ +include ../common.mk + +PROJECT_NAME:=cls06 + +TGTS:=$(patsubst %.c,%,$(wildcard *.c)) + +all: $(TGTS) + +%: %.c + @mkdir -p $(BUILD_PATH)/$(PROJECT_NAME) + $(CC) $(CFLAGS) $^ -o $(BUILD_PATH)/$(PROJECT_NAME)/$@ + +clean: + $(RM) -drf $(BUILD_PATH)/$(PROJECT_NAME) diff --git a/src/cls06/a1.c b/src/cls06/a1.c new file mode 100644 index 0000000..09f1057 --- /dev/null +++ b/src/cls06/a1.c @@ -0,0 +1,37 @@ +#include +#include + +#define BUFF_SZ 256 + +int str_chnum(const char s[], int c) { + int idx = 0; + int n = 0; + + while (s[idx] != '\0' && idx < BUFF_SZ) { + if (s[idx] == (char)c) { + n++; + } + idx++; + } + + return n; +} + +int main(void) { + char *buff = (char*)calloc(sizeof(char), BUFF_SZ); + char query = 0; + + printf("Input String: "); + fgets(buff, BUFF_SZ, stdin); + + printf("Input Search Character: "); + scanf("%c", &query); + + int cnt = str_chnum(buff, query); + + printf("Found %d \'%c\'\n", cnt, query, buff); + + free(buff); + + return 0; +} diff --git a/src/cls06/a2.c b/src/cls06/a2.c new file mode 100644 index 0000000..7aa92fe --- /dev/null +++ b/src/cls06/a2.c @@ -0,0 +1,42 @@ +#include +#include + +#define BUFF_SZ 256 + +void put_stringn(const char s[], int n) { + if (n < 0) return; + + int idx = 0; + + for (int i = 0; i < n; i++) { + idx = 0; + while (s[idx] != '\0' && idx < BUFF_SZ) { + if (s[idx] == '\n') { + idx++; + continue; + } + putchar(s[idx]); + idx++; + } + } + + putchar('\0'); +} + +int main(void) { + char *buff = (char*)calloc(sizeof(char), BUFF_SZ); + int n = 0; + + printf("Input String: "); + fgets(buff, BUFF_SZ, stdin); + + printf("Input Repeat Num: "); + scanf("%d", &n); + + put_stringn(buff, n); + putchar('\n'); + + free(buff); + + return 0; +}