#include <stdio.h>
int main(void)
{
int i, j;
long dec; /* ให้รับค่าอินพุทแบบ Long Integer - เลขจำนวนเต็มแบบยาว */
int bit[32]; /* จองพื้นที่ในการเก็บข้อมูลเลขฐาน 2 ลงใน Array */
clrscr(); /* เคลียร์หน้าจอ */
printf("Decimal Number : "); /* แจ้งผู้ใช้เพื่อเตรียมป้อนค่าเลขฐาน 10 */ scanf("%ld", &dec); /* ต้องใช้ ld เพราะ Input มันเป็นแบบ Long Integer */
i = 0; /* กำหนดค่าเริ่มต้นของ Array */
/* ทำตามที่ได้ออกแบบโปรแกรมเอาไว้ ... ยังไงยังงั้นเลย 55555+ */
do {
bit[i++] = dec % 2; /* การหารเอาเศษ เพื่อให้เป็นคำตอบ */
/* การหารทั่วไป แต่ตัวแปร dec ของภาษา C มันเป็น Integer หรือ เลขจำนวนเต็ม */
/* ดังนั้นมันจึงตัดเศษ (หรือทศนิยม) ทิ้งไปโดยอัตโนมัติ */
dec = dec / 2;
} while (dec > 0); /* เงื่อนไขที่ทำจนกระทั่ง dec = 0 ก็ออกจากวังวนเงื่อนไข */
/* การแสดงผลของการแปลงเลขฐาน 10 เป็นเลขฐาน 2*/
/* j = i - 1 และให้ j ลดค่าลงทีละ 1 ... ก็คืออ่านข้อมูลถอยหลังกลับเท่านั้นเองครับ */
/* เพราะตัวแปรแบบ Array ในภาษา C มันเก็บข้อมูลจากซ้ายไปขวา */
/* ทำให้ LSB # กำหนดค่าคงที่ของแรงโน้มถ่วง (หน่วย m/s^2)
GRAVITY = 9.81
# ตำแหน่งเริ่มต้น (เมตร)
position = 100.0 # วัตถุอยู่สูงจากพื้น 100 เมตร
velocity = 0.0 # เริ่มต้นด้วยความเร็ว 0
time_step = 0.1 # หน่วยเวลาแต่ละรอบ (วินาที)
# จำลองการเคลื่อนที่ภายใต้แรงโน้มถ่วง
for i in range(100):
velocity += GRAVITY * time_step # ความเร็วเพิ่มขึ้นตามแรงโน้มถ่วง
position -= velocity * time_step # ตำแหน่งลดลง (วัตุตกลงมา)
print(f"เวลา: {i*time_step:.1f} วินาที | ตำแหน่ง: {position:.2f} m | ความเร็ว: {velocity:.2f} m/s")
if position <= 0:
print("วัตุตกถึงพื้นแล้ว!")
break