generated from kenryuS/report-temp
added cls11
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
\documentclass[xelatex,a4paper,11pt,ja=standard]{bxjsarticle}
|
||||||
|
|
||||||
|
\usepackage{tex/preamble}
|
||||||
|
\usepackage{tex/simple-title}
|
||||||
|
|
||||||
|
\reportauthor{柴田健琉}
|
||||||
|
\reporttitle{情報処理2 - 前期第11回課題}
|
||||||
|
\reportdate{2026年}{07月}{02日}
|
||||||
|
\turnindate{2026年}{07月}{06日}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\simpletitle
|
||||||
|
|
||||||
|
\section{はじめに}
|
||||||
|
|
||||||
|
この課題のプログラムは以下の環境での動作が確認されている:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item{OS: Arch Linux, Linux 6.18.37-1-lts x86\_64}
|
||||||
|
\item{CC: GCC 15.2.0}
|
||||||
|
\item{CFLAGS: \texttt{-g -O1 -Wall -Wpedantic}}
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\section{課題 - 回文判定}
|
||||||
|
|
||||||
|
|
||||||
|
\end{document}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
include ../common.mk
|
||||||
|
|
||||||
|
PROJECT_NAME:=cls11
|
||||||
|
|
||||||
|
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)
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#define BUFF_SZ 128
|
||||||
|
|
||||||
|
// Lenght of string including null terminator
|
||||||
|
int my_strlen(char *str, int max_len) {
|
||||||
|
int i = 0;
|
||||||
|
while (*(str + i) != '\0' && i < max_len)
|
||||||
|
i++;
|
||||||
|
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
// convert ASCII CAPITAL CASE ALPHABETS into lower case alphabets
|
||||||
|
void to_lower(char *str, int sz) {
|
||||||
|
for (int i = 0; i < sz; i++) {
|
||||||
|
if (*(str + i) >= 'A' && *(str + i) <= 'Z') {
|
||||||
|
*(str + i) = *(str + i) + 0x20;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove every non-alphabet letters from string
|
||||||
|
int strip(char *str, char *dest, int sz) {
|
||||||
|
int ret_sz = 0;
|
||||||
|
|
||||||
|
if (str == NULL || dest == NULL) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < sz; i++) {
|
||||||
|
if (*(str + i) >= 'a' && *(str + i) <= 'z') {
|
||||||
|
*(dest + ret_sz) = *(str + i);
|
||||||
|
ret_sz++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*(dest + ret_sz) = '\0';
|
||||||
|
|
||||||
|
return ret_sz;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if string is a palindrome
|
||||||
|
bool kaibun(char *str, int sz) {
|
||||||
|
for (int i = 0; i < (sz - 1)/2; i++) {
|
||||||
|
if (*(str + i) != *(str + sz - i - 2)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
char *b = (char*)malloc(sizeof(char) * (BUFF_SZ + 1)); // BUFF_SZ letters + null terminator
|
||||||
|
char *t = (char*)malloc(sizeof(char) * (BUFF_SZ + 1));
|
||||||
|
|
||||||
|
printf("Input string: ");
|
||||||
|
char* res = fgets(b, BUFF_SZ, stdin);
|
||||||
|
if (res == NULL) {
|
||||||
|
printf("Error while reading from stdin\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int len = my_strlen(b, BUFF_SZ);
|
||||||
|
|
||||||
|
printf("len: %d\n", len);
|
||||||
|
|
||||||
|
to_lower(b, len);
|
||||||
|
len = strip(b, t, len);
|
||||||
|
|
||||||
|
printf("len: %d\n", len);
|
||||||
|
|
||||||
|
bool isPalindrome = kaibun(t, len + 1);
|
||||||
|
|
||||||
|
printf("isPalindrome: %d\n", isPalindrome);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user