diff --git a/ball-bounce-calculator-alt/README.md b/ball-bounce-calculator-alt/README.md new file mode 100644 index 0000000..665ef36 --- /dev/null +++ b/ball-bounce-calculator-alt/README.md @@ -0,0 +1,38 @@ +# ball-bounce-calculator-alt + +"ถ้าบอลลูกหนึ่งเมื่อตกกระทบพื้นแล้วจะกระดอนขึ้นในแนวดิ่งเป็นระยะทาง 2/5 เท่าของความสูงที่ตก และ ลูกบอลจะไม่กระดอนอีกถ้าตกจาก ความสูงที่น้อยกว่าหรือเท่ากับ 1 เซนติเมตร" + +โปรแกรมนี้จะเพื่อรับความสูงจากพื้นเริ่มต้นของลูกบอลลูกนี้จากนั้นคำนวณหาระยะทางรวมที่ลูกบอลเคลื่อนที่ทั้งหมด (ระยะทางที่ตกรวมกับระยะทางที่กระดอนทั้งหมด) พร้อมกับจำนวนครั้งที่ลูกบอลกระทบพื้นทั้งหมด (ทั้งกระดอนและไม่กระดอน) + +**เป็นอีกเวอร์ชันหนึ่งของ ball-bounce-calculator ในเวอร์ชันนี้ จะมีการนำสูตรอนุกรมเรขาคณิตมาใช้ในการคำนวณ** + +![Formula](info/formula.png) + +โปรแกรมนี้เขียนขึ้นด้วย C++ และทดสอบ compile ด้วย GCC 11.2.1 บน Fedora Linux 34 +สคริปต์ติดตั้งและถอนการติดตั้ง ทดสอบรันด้วย + +**ตัวอย่างการทำงานของโปรแกรม** + +![Screenshot](info/screenshot.png) + +**วิธีติดตั้ง (สำหรับ Linux เท่านั้น)** + +1. โคลน git นี้ + + `$ git clone https://gitlab.com/sashapgt/ball-bounce-calculator-alt.git` + +2. cd เข้าโฟลเดอร์ของ git นี้ แล้วรันสคริปต์ติดตั้ง + + `$ cd ball-bounce-calculator-alt && sh install.sh` + +3. เรียกใช้จากเทอร์มินัลได้เลย + + `$ ball-bounce-calculator-alt` + +**วิธีถอนการติดตั้ง (สำหรับ Linux เท่านั้น)** + +1. รันสคริปต์ถอนการติดตั้งจากในโฟลเดอร์ git นี้ + + `$ sh uninstall.sh` + +2. ลบโฟลเดอร์ git นี้ \ No newline at end of file diff --git a/ball-bounce-calculator-alt/info/formula.png b/ball-bounce-calculator-alt/info/formula.png new file mode 100644 index 0000000..b068188 Binary files /dev/null and b/ball-bounce-calculator-alt/info/formula.png differ diff --git a/ball-bounce-calculator-alt/info/screenshot.png b/ball-bounce-calculator-alt/info/screenshot.png new file mode 100644 index 0000000..277034f Binary files /dev/null and b/ball-bounce-calculator-alt/info/screenshot.png differ diff --git a/ball-bounce-calculator-alt/install.sh b/ball-bounce-calculator-alt/install.sh new file mode 100755 index 0000000..6b7594c --- /dev/null +++ b/ball-bounce-calculator-alt/install.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +DIR1=$HOME/.local/bin +DIR2=/usr/bin +APPNAME=ball-bounce-calculator-alt + + clear + if [[ "${EUID}" -eq 0 ]]; then + echo " " + echo "คุณกำลังใช้สิทธิ์ Root! ต้องการดำเนินการติดตั้งต่อใน $DIR2 หรือไม่" + echo " " + echo "1) ไม่" + echo "2) ใช่" + echo " " + read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE + until [[ -z "$INSTALLCHOICE" || "$INSTALLCHOICE" =~ ^[1-2]$ ]]; do + printf "\n$INSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n" + read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE + done + case "$INSTALLCHOICE" in + 1|"") + exit + ;; + 2) + DIR=$DIR2 + printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n" + g++ -Wall -o "$DIR/$APPNAME" "main.cpp" + ;; + esac + else + echo " " + echo "เลือกผู้ใช้ที่ต้องการติดตั้งให้" + echo " " + echo "1) $USER ($DIR1)" + echo "2) ทุกคน ($DIR2)" + echo " " + read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE + + until [[ -z "$INSTALLCHOICE" || "$INSTALLCHOICE" =~ ^[1-2]$ ]]; do + printf "\n$INSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n" + read -p "ใส่คำตอบของคุณ [1] : " INSTALLCHOICE + done + case "$INSTALLCHOICE" in + 1|"") + DIR=$DIR1 + if [[ ! -d "$DIR" ]]; then + mkdir $DIR + fi + printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n" + g++ -Wall -o "$DIR/$APPNAME" "main.cpp" + ;; + 2) + DIR=$DIR2 + printf "\nกำลัง Build และติดตั้ง $APPNAME ใน $DIR\n" + printf "\nกรุณาใส่รหัสผ่าน sudo หากถูกถามในการติดตั้ง\n\n" + sudo g++ -Wall -o "$DIR/$APPNAME" "main.cpp" + ;; + esac + fi + printf "\nการติดตั้ง $APPNAME ใน $DIR เสร็จสมบูรณ์\n" diff --git a/ball-bounce-calculator-alt/main.cpp b/ball-bounce-calculator-alt/main.cpp new file mode 100644 index 0000000..6949cdc --- /dev/null +++ b/ball-bounce-calculator-alt/main.cpp @@ -0,0 +1,22 @@ +#include + +int main() { + // h คือความสูงเริ่มต้น i คือความสูง ณ จุดจุดหนึ่ง j คือระยะทางสะสม และ k คือจำนวนครั้งที่กระดอน m จะดูว่ายกกำลังไปกี่ครั้ง + float h,i,j=0; + int k=0; + float m = 0.4; + printf("Height (in centimeters) = "); + scanf("%f", &h); + j=h; // การตกครั้งแรก + i=h; + while (i>1) { //ตรวจว่าความสูงมากกว่า 1 เซนติเมตรหรือไม่ + k=k+1; + i=(0.4)*i; + } + for(int l=0; l + +int main() { + // h คือความสูงเริ่มต้น i คือความสูง ณ จุดจุดหนึ่ง j คือระยะทางสะสม และ k คือจำนวนครั้งที่กระดอน + float h,i,j=0; + int k=0; + printf("Height (in centimeters) = "); + scanf("%f", &h); + j=h; // การตกครั้งแรก + i=h; + while (i>1) { //ตรวจว่าความสูงมากกว่า 1 เซนติเมตรหรือไม่ + k=k+1; + i=(0.4)*i; + j=j+(2*i); + } + printf("Distance = %.2f",j); + printf("\nBounce count = %d",k); + return 0; + } diff --git a/ball-bounce-calculator/uninstall.sh b/ball-bounce-calculator/uninstall.sh new file mode 100755 index 0000000..1771b31 --- /dev/null +++ b/ball-bounce-calculator/uninstall.sh @@ -0,0 +1,74 @@ +#!/bin/sh + +DIR1=$HOME/.local/bin +DIR2=/usr/bin +APPNAME=ball-bounce-calculator + + clear + if [[ "${EUID}" -eq 0 ]]; then + echo " " + echo "คุณกำลังใช้สิทธิ์ Root! ต้องการถอนการติดตั้งจาก $DIR2 หรือไม่" + echo " " + echo "1) ไม่" + echo "2) ใช่" + echo " " + read -p "ใส่คำตอบของคุณ [1] : " UNINSTALLCHOICE + + until [[ -z "$UNINSTALLCHOICE" || "$UNINSTALLCHOICE" =~ ^[1-2]$ ]]; do + printf "\n$UNINSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง\n\n" + read -p "ใส่คำตอบของคุณ [1] : " UNINSTALLCHOICE + done + case "$UNINSTALLCHOICE" in + 1|"") + exit + ;; + 2) + DIR=$DIR2 + if [[ -f "$DIR/$APPNAME" ]]; then + echo "กำลังถอนการติดตั้ง $APPNAME จาก $DIR" + sudo rm $DIR/$APPNAME + else + echo "ไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR" + fi + ;; + esac + else + echo " " + echo "เลือกผู้ใช้ที่ต้องการถอนติดตั้งให้" + echo " " + echo "1) $USER ($DIR1)" + echo "2) ทุกคน ($DIR2)" + echo " " + read -p "ใส่คำตอบของคุณ : " UNINSTALLCHOICE + until [[ -z "$UNINSTALLCHOICE" || "$UNINSTALLCHOICE" =~ ^[1-2]$ ]]; do + echo "$UNINSTALLCHOICE: ค่าที่ใส่ไม่ถูกต้อง" + read -p "ใส่คำตอบของคุณ :" UNINSTALLCHOICE + done + case "$UNINSTALLCHOICE" in + 1) + DIR=$DIR1 + if [[ -f "$DIR/$APPNAME" ]]; then + printf "\nกำลังถอนการติดตั้ง $APPNAME จาก $DIR\n" + rm $DIR/$APPNAME + else + printf "\nไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR" + exit + fi + ;; + 2) + DIR=$DIR2 + if [[ -f "$DIR/$APPNAME" ]]; then + printf "\nกำลังถอนการติดตั้ง $APPNAME จาก $DIR\n" + printf "\nกรุณาใส่รหัสผ่าน sudo หากถูกถามในการติดตั้ง\n\n" + sudo rm $DIR/$APPNAME + else + printf "\nไม่สามารถถอนการติดตั้งได้เนื่องจากยังไม่ได้ติดตั้งแอปพลิเคชันใน $DIR" + exit + fi + ;; + "") + exit + ;; + esac + fi + printf "\nการถอนการติดตั้ง $APPNAME จาก $DIR เสร็จสมบูรณ์\n"