This commit is contained in:
2026-04-27 14:01:24 +09:00
parent a7200482d8
commit 5a46adecd9
8 changed files with 154 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.
Binary file not shown.
+63
View File
@@ -0,0 +1,63 @@
\documentclass[xelatex,a4paper,11pt,ja=standard]{bxjsarticle}
\usepackage{tex/preamble}
\usepackage{tex/detailed-title}
\reportauthor{柴田健琉}
\reporttitle{前期第3回課題}
\reportdate{2026年}{04月}{27日}
\turnindate{2026年}{04月}{27日}
\schoolname{岐阜工業高等専門学校}
\department{電子制御工学科}
\subject{情報処理2}
\professor{遠藤 登}
\studentid{2024D14}
\seatingnum{15}
\begin{document}
\detailedtitle{}
\section{はじめに}
この課題のプログラムは以下の環境での動作が確認されている:
\begin{itemize}
\item{OS: NixOS 25.11 Xantusia, Linux Kernel 7.0.0 x86\_64}
\item{CC: GCC 15.2.0}
\item{CFLAGS: \texttt{-g -O1 -Wall -Wpedantic}}
\end{itemize}
\section{課題1}
再帰関数を用いて1から$n$の自然数の和を求めるプログラム.
\lstinputlisting[language=C,title={課題1}]{./src/cls03/a1.c}
\subsection{実行結果}
\begin{figure}[tbh]
\centering
\includegraphics[width=11cm]{./assets/cls03-a1.png}
\caption{課題1の実行結果}
\end{figure}
\newpage
\section{課題2-4}
課題2:ユークリッド互除法を用いた最大公約数を求める関数の作成.
課題3:課題2の関数を用いて最小公倍数を求める関数の作成.
課題4:配列として与えられた分数を約分する関数の作成.
\lstinputlisting[language=C,title={課題2-4の統合プログラム}]{./src/cls03/a2-4.c}
\subsection{実行結果}
\begin{figure}[tbh]
\centering
\includegraphics[width=12cm]{./assets/cls03-a2-4.png}
\caption{実行結果}
\end{figure}
\end{document}
+14
View File
@@ -0,0 +1,14 @@
include ../common.mk
PROJECT_NAME:=cls03
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)
+19
View File
@@ -0,0 +1,19 @@
#include <stdio.h>
unsigned int sum_recc(unsigned int n) {
if (n == 0) return 0;
return n + sum_recc(n - 1);
}
int main(void) {
unsigned int x = 0;
printf("Input natural number: ");
(void)scanf("%u", &x);
unsigned int s = sum_recc(x);
printf("Result: %u\n", s);
return 0;
}
+58
View File
@@ -0,0 +1,58 @@
#include <stdio.h>
void getTwoInts(int* a, int* b) {
printf("1st Int: ");
(void)scanf("%d", a);
printf("2nd Int: ");
(void)scanf("%d", b);
}
void printRatio(int r[]) {
printf("%d/%d", r[0], r[1]);
}
int gcm(int a, int b);
int lcm(int a, int b);
void reduce(int x[]);
int gcm(int a, int b) {
int x = a, y = b;
if (x < y) {
x = b;
y = a;
}
int r = a % b;
if (r == 0) return b;
return gcm(b, r);
}
int lcm(int a, int b) {
int g = gcm(a, b);
return b * a / g;
}
void reduce(int x[]) {
int a = x[0], b = x[1];
int g = gcm(a, b);
x[0] = a / g;
x[1] = b / g;
}
int main(void) {
int a,b;
getTwoInts(&a, &b);
int g = gcm(a, b);
int l = lcm(a, b);
printf("Result:\ngcm = %d\nlcm = %d\n", g, l);
int r[2] = {a, b};
printf("Before: ");
printRatio(r); putchar('\n');
reduce(r);
printf("After: ");
printRatio(r); putchar('\n');
return 0;
}