เพิ่ม Ball bounce calculator
This commit is contained in:
parent
50bbb4ec55
commit
2c0ea07d01
11 changed files with 380 additions and 0 deletions
38
ball-bounce-calculator-alt/README.md
Normal file
38
ball-bounce-calculator-alt/README.md
Normal file
|
@ -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 นี้
|
BIN
ball-bounce-calculator-alt/info/formula.png
Normal file
BIN
ball-bounce-calculator-alt/info/formula.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 65 KiB |
BIN
ball-bounce-calculator-alt/info/screenshot.png
Normal file
BIN
ball-bounce-calculator-alt/info/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
60
ball-bounce-calculator-alt/install.sh
Executable file
60
ball-bounce-calculator-alt/install.sh
Executable file
|
@ -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"
|
22
ball-bounce-calculator-alt/main.cpp
Normal file
22
ball-bounce-calculator-alt/main.cpp
Normal file
|
@ -0,0 +1,22 @@
|
|||
#include<stdio.h>
|
||||
|
||||
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<k; l++){
|
||||
m = m*0.4;
|
||||
}
|
||||
printf("Distance = %.2f",(j*((1.0-m)/(1.0-0.4)))+((j*0.4)*((1.0-m/0.4)/(1.0-0.4))));
|
||||
printf("\nBounce count = %d",k);
|
||||
return 0;
|
||||
}
|
74
ball-bounce-calculator-alt/uninstall.sh
Executable file
74
ball-bounce-calculator-alt/uninstall.sh
Executable file
|
@ -0,0 +1,74 @@
|
|||
#!/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] : " 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"
|
33
ball-bounce-calculator/README.md
Normal file
33
ball-bounce-calculator/README.md
Normal file
|
@ -0,0 +1,33 @@
|
|||
# ball-bounce-calculator
|
||||
|
||||
"ถ้าบอลลูกหนึ่งเมื่อตกกระทบพื้นแล้วจะกระดอนขึ้นในแนวดิ่งเป็นระยะทาง 2/5 เท่าของความสูงที่ตก และ ลูกบอลจะไม่กระดอนอีกถ้าตกจาก ความสูงที่น้อยกว่าหรือเท่ากับ 1 เซนติเมตร"
|
||||
|
||||
โปรแกรมนี้จะเพื่อรับความสูงจากพื้นเริ่มต้นของลูกบอลลูกนี้จากนั้นคำนวณหาระยะทางรวมที่ลูกบอลเคลื่อนที่ทั้งหมด (ระยะทางที่ตกรวมกับระยะทางที่กระดอนทั้งหมด) พร้อมกับจำนวนครั้งที่ลูกบอลกระทบพื้นทั้งหมด (ทั้งกระดอนและไม่กระดอน)
|
||||
|
||||
โปรแกรมนี้เขียนขึ้นด้วย 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.git`
|
||||
|
||||
2. cd เข้าโฟลเดอร์ของ git นี้ แล้วรันสคริปต์ติดตั้ง
|
||||
|
||||
`$ cd ball-bounce-calculator && sh install.sh`
|
||||
|
||||
3. เรียกใช้จากเทอร์มินัลได้เลย
|
||||
|
||||
`$ ball-bounce-calculator`
|
||||
|
||||
**วิธีถอนการติดตั้ง (สำหรับ Linux เท่านั้น)**
|
||||
|
||||
1. รันสคริปต์ถอนการติดตั้งจากในโฟลเดอร์ git นี้
|
||||
|
||||
`$ sh uninstall.sh`
|
||||
|
||||
2. ลบโฟลเดอร์ git นี้
|
BIN
ball-bounce-calculator/info/screenshot.png
Normal file
BIN
ball-bounce-calculator/info/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
60
ball-bounce-calculator/install.sh
Executable file
60
ball-bounce-calculator/install.sh
Executable file
|
@ -0,0 +1,60 @@
|
|||
#!/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] : " 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"
|
19
ball-bounce-calculator/main.cpp
Normal file
19
ball-bounce-calculator/main.cpp
Normal file
|
@ -0,0 +1,19 @@
|
|||
#include<stdio.h>
|
||||
|
||||
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;
|
||||
}
|
74
ball-bounce-calculator/uninstall.sh
Executable file
74
ball-bounce-calculator/uninstall.sh
Executable file
|
@ -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"
|
Loading…
Reference in a new issue