3. การคำนวณตัวเลข¶
Computing with Numbers
3.1. จุดประสงค์รายสัปดาห์¶
อธิบายแนวคิดของการแบ่งประเภทข้อมูลได้
เข้าใจและสามารถใช้งานข้อมูลประเภทตัวเลขได้
อธิบายการเขียนข้อมูลประเภทตัวเลขแบบต่างๆได้
อธิบายฟังก์ชันที่สำคัญจาก library ชือ math ได้
สามารถเขียนโปรแกรมเพื่อหาผลรวมได้
สามารถเขียนโปรแกรมเพื่ออ่านค่าและประมวลผลตัวเลขได้
เขียนคำสั่งรับตัวเลขจากผู้ใช้และวนลูป loop ได้
3.2. ตัวเลขประเภทต่างๆ (Numeric Data Types)¶
ข้อมูลที่จัดเก็บและควบคุมโดย Program เรียกว่า data.
data ที่เป็นค่าของตัวเลขมีอยู่ 2 แบบ
ตัวเลขจำนวนเต็ม Z เช่น 5, 4, 3, 6, -3, 1, 7, 0
int
ตัวเลขที่มีทศนิยม Q เช่น .25, .10, .05, 3.01, 3.97e12
float
รูปแบบการจัดเก็บ Z, Q ในคอมพ์ต่างกัน
ดังนั้นประเภทของมูลของ Z, Q จึงต่างกัน
ประเภทของข้อมูล เรียกว่า Data Types
3.3. ค่าใดเป็น int
ค่าใดเป็น float
?¶
int
- ตัวเลขที่ไม่มีทศนิยมfloat
- ตัวเลขที่มีทศนิยม
3, 3.99, 4, 2, 3.0, 4, 8, 7., 1
3.4. การตรวจดูชนิดของข้อมูล¶
type(3)
# <class 'int'>
type(3.44)
# <class 'float'>
age = 32
type(age)
# <class 'int'>
3.5. ทำไมตัวเลขมี 2 ประเภท?¶
การคำนวณจำนวนเต็มทำได้ง่ายกว่า
จำนวนนับเป็นจำนวนเต็ม
ค่าเลขทศนิยม(บางค่า)เก็บเป็นค่าประมาณการไม่สามารถเก็บค่าจริงๆได้ในคอมพิวเตอร์ที่เก็บเป็นเลขฐานสอง
ควรใช้
int
ทุกครั้งที่เป็นไปได้
3.6. ตัวดำเนินการ (Operators)¶
Names |
Symbols |
---|---|
บวก, ลบ, คูณ, หาร |
+, -, *, / |
ยกกำลัง |
** |
หารเป็นจำนวนเต็ม |
// |
หารเอาเศษ |
% |
หมายเหตุ: การหารเอาเศษนั้นมาจากสมการ
โดย
เมื่อหาร \(a\) ด้วย \(d\) แล้วจะได้เศษ \(r\)
\(q\) เรียกว่า quotient
\(r\) = remainder
3.7. กฏการหาผลลัพธ์เมื่อใช้ตัวดำเนินการ¶
int
กับint
จะได้ผลลัพธ์เป็นint
ยกเว้น/
float
กับfloat
จะได้ผลลัพธ์เป็นfloat
int
กับfloat
หรือfloat
กับint
จะได้ผลลัพธ์เป็นfloat
type( 3.0 + 4.0 )
type( 3 + 4 )
type( 3.0 * 4.0 )
type( 3 * 4 )
type( 10.0 / 3.0 )
type( 10 / 3 )
type( 10 // 3 )
type( 10.0 // 3.0 )
3.8. ลำดับการประมวลผลเมื่อสมการมีทั้ง int
และ float
¶
คำสั่งหรือสมการที่ประมวลค่าออกมาได้เรียกว่า expression
3.44 3 * 4 + 42
ถ้าเป็น mixed expression อย่าง
3 + 4.5
จะมีลำดับการทำงานดังนี้
Python จะแปลง
3
ให้เป็นfloat
ก่อนทำการประมวลผล3 + 4.5
3.0 + 4.5
7.5
3.9. การเปลี่ยนประเภทของตัวเลข¶
float(22//5)
# 4.0
int(4.5)
# 4
int("4")
# 4
float("32")
# 32.0
round(3.9)
# 4
round(3)
# 3
round(3.1415926, 2)
# 3.14
หมายเหตุ : * ควรใช้ float(), int() ในการแปลงตัวเลขจากผู้ใช้แทน eval() * เพราะข้อมูลที่ผู้ใช้กรอกจะตรงกับที่ต้องการใช้ * ถ้าผู้ใช้กรอกไม่ตรง โปรแกรมจะปิดและมีข้อความแสดงข้อผิดพลาด - error message
3.10. ตัวอย่างโปรแกรม¶
# รวมตังค์
print("โปรแกรมรวมตังค์")
print()
print("กรอกจำนวนเงินตามประเภท")
tens = int(input("มูลค่า 10 มีจำนวน: "))
twenties = int(input("แบงค์ 20 มีจำนวน: "))
fifties = int(input("แบงค์ 50 มีจำนวน: "))
hundreds = int(input("แบงค์ 100 มีจำนวน: "))
total = tens*10 + twenties*20 + fifties*50 + hundreds*100
print()
print("รวมมีเงินทั้งหมด ", total)
3.11. การใช้ชุดคำสั่ง math library¶
นอกจากการใช้ตัวดำเนินการทางคณิตศาสตร์เช่น +, -, *, /, //, **, %
และ
abs()
ในการประมวลค่าของสมการแล้ว Python
ยังมาพร้อมกับชุดคำสั่งพิเศษสำหรับใช้ในการคำนวณใน math library อีกด้วย
library หมายถึง ชุดคำสั่ง (package or module) ที่เราสามารถเรียกนำเข้ามาใช้ได้ด้วยคำสั่ง import
import คือ คำสั่งนำเข้า ชุดคำสั่ง เพื่อให้สามารถเรียกใช้คำสั่งภายใน module นั้นๆ ได้
ต้องเรียกคำสั่งนำเข้าก่อนใช้งานเสมอ
ตัวอย่างฟังก์ชันที่สามารถใช้ได้ใน math library
กลุ่มฟังก์ชัน |
functions |
---|---|
|
ceil(x), fabs(x), factorial(n), floor(x), fmod(x, y) fsum(..), gcd(a, b), remainder(x, y) |
|
isClose(x, y, rel_tol=1e-09, abs_tol=0.0), isfinite(x), isnan(x) |
|
exp(x), log(x, base), log2(x), log10(x), pow(x, y), sqrt(x) |
|
acos(x), asin(x), atan(x), atan2(y, x), cos(x), hypot(x, y), sin(x), tan(x) |
|
degrees(x), radians(x) |
|
acosh(x), asinh(x), atanh(x), cosh(x), sinh(x), tanh(x) |
|
erf(x), erfc(x), gamma(x), lgamma(x) |
|
pi, e, tau, inf, nan |
3.12. ตัวอย่างโปรแกรม¶
ซอฟต์แวร์สำหรับเพื่อแก้สมการ \(ax^2 + bx + c = 0\)
Analysis > ผู้ใช้ต้องการหาค่า \(x\) ที่ทำให้สมการ \(ax^2 + bx + c = 0\)
Specification
Input - ค่าสัมประสิทธิ์ของสมการได้แก่ $a, b, c$
Output - ค่า $x$ ทั้งหมดที่ทำให้สมการ $ax^2 + bx + c = 0$
Process - คำนวณรากของสมการโดยใช้สมการ
Create Design (Algorithm) > ใช้ลำดับการทำงาน Input -> Process -> Output
input ผู้ใช้กรอกค่า \(a, b, c\) ตามลำดับ
process
คำนวณค่า \(x1 = \frac{-b + \sqrt{b^2 - 4ac}}{2a}\)
คำนวณค่า \(x2 = \frac{-b - \sqrt{b^2 - 4ac}}{2a}\)
output แสดงค่า \(x1, x2\)
Implement Design
import math
a = float(input('กรอกค่า a: '))
b = float(input('กรอกค่า b: '))
c = float(input('กรอกค่า c: '))
x1 = (-b + math.sqrt(b**2 - 4*a*c))/(2*a)
x2 = (-b - math.sqrt(b**2 - 4*a*c))/(2*a)
print('รากที่หนึ่งของสมการคือ '+str(x1))
print('รากที่สองของสมการคือ '+str(x2))
# หรือ print(f'(x1={x1}, x2={x2})')
Test/Debug Program
รันโปรแกรมแล้วกรอกค่าทดสอบต่อไปนี้ ว่าสามารถทำงานได้จริงหรือมีข้อผิดพลาดหรือไม่?
Input |
Output |
---|---|
กรอกค่า a: 1 |
x1=-1.0, x2=-1.0 |
กรอกค่า b: 2 |
|
กรอกค่า c: 1 |
Input |
Output |
---|---|
กรอกค่า a: 1 |
x1=8.0, x2=-2.0 |
กรอกค่า b: -6 |
|
กรอกค่า c: -16 |
Input |
Output |
---|---|
กรอกค่า a: 1 |
x1=-5.0, x2=-1.0 |
กรอกค่า b: 6 |
|
กรอกค่า c: 5 |
Input |
Output |
---|---|
กรอกค่า a: 3 |
x1=0.215250437022, x2=-1.54858377035 |
กรอกค่า b: 4 |
|
กรอกค่า c: -1 |
3.13. Error¶
กรอกค่า a: 1
กรอกค่า b: 2
กรอกค่า c: 3
Traceback (most recent call last):
File "<pyshell#26>", line 1, in -toplevel-
main()
File "...", line 14, in ...
ValueError: math domain error
>>>
3.14. Exercises¶
EX0301 จงเขียนโปรแกรมเพื่อคำนวณหาความเร็วปลาย ของรถที่มีความเร็วต้น \(v_0\) แล้วใช้ความเร่ง \(a\) เป็นเวลา \(t\) วินาที
กำนดสมการในการคำนวณหาความเร็วปลาย \(v_s\) คือ
หน่วยวัด
ความเร่ง \(a\) มีหน่วยเป็น เมตรต่อวินาทีกำลังสอง \(m/s^2\)
ความเร็ว \(v_s, v_0\) มีหน่วยเป็น เมตรต่อวินาที
เวลา \(t\) มีหน่วยเป็น วินาที
ข้อมูลนำเข้า
ข้อมูลนำเข้ามีบรรทัดเดียวเป็นชุดของตัวเลข 3 จำนวนคั่นด้วย ,
โดยตัวแรกเป็นค่า \(a\) ตัวถัดมาเป็นค่าของ \(v_0\) และ \(t\)
ตามลำดับ
ข้อมูลส่งออก
ตัวเลขหนึ่งตัวระบุค่าของ \(v_s\)
Input |
Output |
---|---|
8, 5, 20 |
165 |
10, 2, 15 |
152 |
5, 10, 20 |
110 |
3.15. การเขียนโปรแกรมสะสมค่า¶
เป็นการเขียนโปรแกรมที่จำเป็นต้องมีการคำนวณมากกว่า 1 ครั้งจึงจะได้ผลลัพธ์ เช่น
การบวกตัวเลข 5 ตัวเลขที่ผู้ใช้กรอก
การหาผลรวมของ gpa ของนักศึกษา 10 คนโดยให้ผู้ใช้กรอกทีละค่า
การหาค่าเฉลี่ยจากจำนวนเต็มที่ผู้ใช้กรอก 10 จำนวน
3.15.1. ตัวอย่างการเขียนโปรแกรมสะสมค่า เพื่อบวก 5 ตัวเลข¶
Analysis > ผู้ใช้ต้องการหาค่าผลรวม ของตัวเลขที่ผู้ใชกรอก 5 ตัวเลข
Specification
Input - ตัวเลข 5 ตัวเลข
Output - ผลรวม 5 ตัวเลข
Process - เก็บสะสมผลรวมของตัวเลขที่ผู้ใช้กรอกมาเรื่อยจนครบ 5 ตัวเลข
เมื่อ \(x\) แทนค่าที่ผู้ใช้กรอก
Create Design (Algorithm) > ใช้ลำดับการทำงาน Input -> Process -> Output
input ผู้ใช้กรอกค่า \(x\) 5 ครั้ง
process
total = 0 # ค่าเริ่มต้น
x = int(input())
total = total + x
x = int(input())
total = total + x
x = int(input())
total = total + x
x = int(input())
total = total + x
x = int(input())
total = total + x
output แสดงค่า total
Implement Design
total = 0
x = int(input('กรอกค่า x: '))
total = total + x
x = int(input('กรอกค่า x: '))
total = total + x
x = int(input('กรอกค่า x: '))
total = total + x
x = int(input('กรอกค่า x: '))
total = total + x
x = int(input('กรอกค่า x: '))
total = total + x print('ผลรวมคือ '+str(total))
# หรือ print(f'ผลรวมคือ {total}')
Test/Debug Program
รันโปรแกรมแล้วกรอกค่าทดสอบต่อไปนี้ ว่าสามารถทำงานได้จริงหรือมีข้อผิดพลาดหรือไม่?
Input |
Output |
---|---|
กรอกค่า x: 1 |
ผลรวมคือ 15 |
กรอกค่า x: 2 |
|
กรอกค่า x: 3 |
|
กรอกค่า x: 4 |
|
กรอกค่า x: 5 |
Input |
Output |
---|---|
กรอกค่า x: -1 |
ผลรวมคือ 63 |
กรอกค่า x: 22 |
|
กรอกค่า x: 13 |
|
กรอกค่า x: 14 |
|
กรอกค่า x: 15 |
Input |
Output |
---|---|
กรอกค่า x: 5 |
ผลรวมคือ 35 |
กรอกค่า x: 6 |
|
กรอกค่า x: 7 |
|
กรอกค่า x: 8 |
|
กรอกค่า x: 9 |
3.16. คำสั่งทำซ้ำ n
ครั้ง¶
จากตัวอย่างข้างต้นจะเห็นว่าการเขียนโปรแกรมที่มีการทำงานซ้ำๆกันด้วยคำสั่งชุดเดิมๆ
จะเกิดขึ้นบ่อยมาก ดังนั้นจึงมีคำสั่งทำซ้ำ for
ซึ่งจะช่วยให้การเขียนโปรแกรมมีความยืดหยุ่นและลดความซ้ำซ้อน(ในการพิมพ์ลงไปมาก)
จากตัวอย่างการเขียนโปรแกรมเพื่อบวก 5 ตัวเลข
total = 0
x = int(input('กรอกค่า x: '))
total = total + x
x = int(input('กรอกค่า x: '))
total = total + x
x = int(input('กรอกค่า x: '))
total = total + x
x = int(input('กรอกค่า x: '))
total = total + x
x = int(input('กรอกค่า x: '))
total = total + x
print('ผลรวมคือ '+str(total))
# หรือ
print(f'ผลรวมคือ {total}')
สามารถนำมาเขียนใหม่โดยใช้ for
ดังนี้
total = 0
for i in range(5):
x = int(input('กรอกค่า x: '))
total = total + x
print(f'ผลรวมคือ {total}')
3.16.1. Exercise¶
EX0302 จงเขียนโปรแกรมเพื่อหาผลรวมของ gpa ของนักศึกษา 10 คน
ข้อมูลนำเข้า (Input)
ตัวเลขทศนิยม 10 ตัวเลข แทน gpa ของนักศึกษา 10 คน ตัวเลขละบรรทัด
ข้อมูลส่งออก (Output)
ตัวเลขแสดงผลรวมของ gpa ของนักศึกษาทั้ง 10 คน
ตัวอย่างข้อมูลนำเข้า-ส่งออก
Input |
Output |
---|---|
2.55 |
33.82 |
3.55 |
|
2.75 |
|
2.66 |
|
3.95 |
|
4.00 |
|
3.75 |
|
3.64 |
|
3.44 |
|
3.53 |
EX0303 จงเขียนโปรแกรมเพื่อหาค่าเฉลี่ย gpa ของนักศึกษา 10 คน
ข้อมูลนำเข้า (Input)
ตัวเลขทศนิยม 10 ตัวเลข แทน gpa ของนักศึกษา 10 คน ตัวเลขละบรรทัด
ข้อมูลส่งออก (Output)
ตัวเลขแสดงผลเฉลี่ยของ gpa ของนักศึกษาทั้ง 10 คน
Input |
Output |
---|---|
2.55 |
3.382 |
3.55 |
|
2.75 |
|
2.66 |
|
3.95 |
|
4.00 |
|
3.75 |
|
3.64 |
|
3.44 |
|
3.53 |
3.16.2. ถ้าผู้ใช้ต้องการกรอกจำนวนตัวเลขเอง¶
total = 0
n = int(input('จำนวนตัวเลขที่ต้องการกรอก: '))
for i in range(n):
x = int(input('กรอกค่า x: '))
total = total + x
print(f'ผลรวมคือ {total}')
Input |
Output |
---|---|
จำนวนตัวเลขที่ต้องการกรอก: 3 |
ผลรวมคือ 20 |
กรอกค่า x: 9 |
|
กรอกค่า x: 7 |
|
กรอกค่า x: 4 |
Input |
Output |
---|---|
จำนวนตัวเลขที่ต้องการกรอก: 2 |
ผลรวมคือ 29 |
กรอกค่า x: 15 |
|
กรอกค่า x: 14 |
3.16.3. Exercise¶
EX0304 จงเขียนโปรแกรมเพื่อหาผลรวมของ gpa ของนักศึกษาตามจำนวนนักศึกษาที่ผู้ใช้ระบุ
ข้อมูลนำเข้า (Input)
บรรทัดแรกเป็นตัวเลขจำนวนเต็ม \(n\) ระบุจำนวนนักศึกษา
\(n\) บรรทัดถัดมาเป็นตัวเลขทศนิยมระบุค่า gpa ของนักศึกษาแต่ละคน
ข้อมูลส่งออก (Output)
ตัวเลขทศนิยมหนึ่งค่า ระบุผลรวมของ gpa ของนักศึกษาทั้งหมด
ตัวอย่างข้อมูลนำเข้า-ส่งออก
Input |
Output |
---|---|
3 |
10.43 |
3.22 |
|
3.55 |
|
3.66 |
Input |
Output |
---|---|
6 |
21.17 |
3.45 |
|
3.65 |
|
3.32 |
|
3.55 |
|
3.54 |
|
3.66 |
EX0305 จงเขียนโปรแกรมเพื่อหาค่าเฉลี่ย gpa ของนักศึกษาตามจำนวนนักศึกษาที่ผู้ใช้ระบุ
3.17. ฟังก์ชัน range( )
¶
ฟังก์ชัน range() สามารถเรียกโดยใช้ตัวเลข 3 ค่าเพื่อเป็นตัวกำหนดพฤติกรรมได้แก่
ค่าเริ่มต้น - start
ค่าสิ้นสุด - stop
ผลต่าง - step
start, stop, step เรียกว่า parameters ของฟังก์ชัน range()
range(stop)
- ทำซ้ำstop
ครั้ง ตั้งแต่0,1,2,.., stop-1
range(start, stop)
- ทำซ้ำ ตามค่าตั้งแต่start,start+1,.., stop-1
range(start, stop, step)
- ทำซ้ำ ตามค่าตั้งแต่start, start+step, start+2*step, ..., stop-1
for i in range(1, 9):
print(i); # 1 2 3 4 5 6 7 8
for i in range(1, 20, 2):
print(i, end=' '); # 1 3 5 7 9 11 13 15 17 19
3.18. Exercise¶
จงเขียนคำสั่งทำซ้ำเพื่อให้ได้ผลลัพธ์ต่อไปนี้
2 4 6 8 9 10
-5 -4 -3 -2 -1 0 1 2
แสดงเลขคู่ตั้งแต่ 10 ถึง 20 (รวม 20)
แสดงเลขที่หาร 3 ลงตัวตั้งแต่ 1 ถึง 30 (รวม 30)
แสดงเลขที่หาร 10 ลงตัวตั้งแต่ -100 ถึง 100 (ไม่รวม -100 และไม่รวม 100)
3.19. การใช้ลำดับแทน range( )
¶
3.19.1. ลำดับ (sequence) ~ Recall¶
ลำดับ (sequence) หมายถึง ชุดของข้อมูลที่มีสมาชิกเรียงกันเป็นลำดับมีตำแหน่งของสมาชิกแต่ละตัวชัดเจน เช่น 3.44, 2.22, 3.00, 3.50, 3.66 เป็นลำดับที่มีสมาชิกดังนี้
สมาชิกตัวแรก(หมายเลข 0) คือ 3.44
สมาชิกหมายเลข 1 คือ 2.22
สมาชิกหมายเลข 2 คือ 3.00
สมาชิกหมายเลข 3 คือ 3.50
สมาชิกหมายเลข 4 คือ 3.66
ตัวอย่างการเขียนชุดข้อมูลที่เป็นลำดับในภาษา Python
[3.44, 2.22, 3.00, 3.50, 3.66]
[1, 2, 3, 4, 5]
['avocado', 'banana', 'cranberry', 'durian']
3.19.2. การใช้คำสั่งทำซ้ำกับลำดับ¶
for i in [1, 2, 3, 4, 5]:
print(i)
for i in [3.44, 2.22, 3.00, 3.50, 3.66]:
print(i)
for fruit in ['avocado', 'banana', 'cranberry', 'durian']:
print(fruit)
3.19.3. การใช้คำสั่งทำซ้ำเพื่อสะสมค่า¶
total = 0
for i in [1, 2, 3, 4, 5]:
total += i
print(f'total = {total}')
totalGpa = 0.0
for i in [3.44, 2.22, 3.00, 3.50, 3.66]:
totalGpa += i
print(f'totalGpa = {totalGpa}')
allFruit = ''
for fruit in ['avocado', 'banana', 'cranberry', 'durian']:
allFruit += fruit
print(f'allFruit = {allFruit}')
3.20. การตรวจสอบค่าสะสมในแต่ละขั้นตอน¶
total = 0
for i in [1, 2, 3, 4, 5]:
total += i
print(f'i={i}, total={total}')
print(f'total={total}')
total = 0
for i in range(1,10):
total += i
print(f'i={i}, total={total}')
print(f 'total={total}')
3.21. การสะสมในแต่ละขั้นตอนด้วยการคูณ หรือตัวดำเนินการอื่น¶
total = 1
for i in [1, 2, 3, 4, 5]:
total *= i
print(f'i={i}, total={total}')
print(f'total={total}')
total = 1
for i in range(1,10):
total /= i
print(f'i={i}, total={total}')
print(f'total={total}')
3.22. ตัวอย่างการพัฒนาซอฟต์แวร์คำนวณยอดเงินลงทุนใน 10 ปี¶
Analysis
เงินลงทุนมีผลตอบแทน
แสดงยอดเงินรวมในปีที่ 10
Inputs: เงินลงทุน(principal), อัตราค่าตอบแทนร้อยละ(rate)
Output: ยอดเงินรวมในปีที่ 10
Specification
Program Investment
Inputs
เงินลงทุน (principal)
อัตราค่าตอบแทน (rate)
Output
ยอดลงทุนรวมในปีที่ 10
Relationship (สมการความสัมพันธ์)
ยอดเงินลงทุนรวม(ปีนี้) = ยอดเงินลงทุนรวม(ปีที่แล้ว) + ยอดเงินลงทุนรวม(ปีที่แล้ว)*อัตราค่าตอบแทน
Create Design (Algorithm) > ใช้ลำดับการทำงาน Input -> Process -> Output
input รับตัวเลข ยอดเงินลงทุน (principal)
input รับตัวเลขทศนิยม อัตราค่าตอบแทน (rate) เช่น ร้อยละ 5 กรอก 0.05 เป็นต้น
process
ทำซ้ำ 10 ครั้งสำหรับ 10 ปี
principal = principal + principal * rate
output แสดงค่า
principal
หลังจากครบ 10 ปี
Implement Design
principal, rate = eval(input('ต้นทุน, อัตราค่าตอบแทน: ')) for year in range(0,10): principal = principal + principal * rate print('ยอดเงินลงทุนรวมหลังจากปีที่ 10 เป็น ', principal)
Test/Debug Program > รันโปรแกรมแล้วกรอกค่าทดสอบต่อไปนี้ ว่าสามารถทำงานได้จริงหรือมีข้อผิดพลาดหรือไม่?
Input |
Output |
---|---|
ต้นทุน, อัตราค่าตอบแทน: 1000, 0.01 |
ยอดเงินลงทุนรวมหลังจากปีที่ 10 เป็น 1104.6221254112043 |
ต้นทุน, อัตราค่าตอบแทน: 10000, 0.03 |
ยอดเงินลงทุนรวมหลังจากปีที่ 10 เป็น 13439.16379344122 |
ต้นทุน, อัตราค่าตอบแทน: 2000000000, 0.05 |
ยอดเงินลงทุนรวมหลังจากปีที่ 10 เป็น 3257789253.554883 |
3.23. Exercise¶
EX0306 จงเขียนโปรแกรมเพื่อหาค่า factorial ของตัวเลขที่ผู้ใช้กรอก โดย factorial ของตัวเลข \(n\) ใดๆ โดยใช้สัญลักษณ์ \(n!\) และมีนิยามดังนี้
ตัวอย่างการคำนวณ
ตัวอย่างข้อมูลนำเข้า-ส่งออก
Input |
Output |
---|---|
3 |
6 |
5 |
120 |
9 |
362880 |
20 |
2432902008176640000 |
EX0307 จงเขียนโปรแกรมเพื่อคำนวณหายอดเงินฝากธนาคารรวมเมื่อสิ้นปีที่ 4 จากเงินต้นที่ผู้ใช้กรอก และอัตราดอกเบี้ยร้อยละ 4 ต่อปี
ตัวอย่างการคำนวณ
กรอกจำนวนเงินต้น 1000
* สิ้นปีที่ 1 ยอดเงิน เป็น ยอดเงินรวมเป็น 1000 + 1000 * 4 / 100
* สิ้นปีที่ 2 ยอดเงิน เป็น ยอดเงินรวมเป็น 1040.0 + 1040.0 * 4 / 100
* สิ้นปีที่ 3 ยอดเงิน เป็น ยอดเงินรวมเป็น 1081.6 + 1081.6 * 4 / 100
* สิ้นปีที่ 4 ยอดเงิน เป็น ยอดเงินรวมเป็น 1124.8639999999998 + 1124.8639999999998 * 4 / 100
* คำตอบเมื่อสิ้นปีที่ 4 ยอดเงินรวมเป็น 1169.85856
Input |
Output |
---|---|
กรอกจำนวนเงินต้น 1000 |
1169.85856 |
กรอกจำนวนเงินต้น 3000 |
3509.57568 |
กรอกจำนวนเงินต้น 10000 |
11698.585599999999 |
EX0308 แสดงสูตรคูณแม่ 12
Input |
Output |
---|---|
4 |
1x12=12 |
2x12=24 |
|
3x12=12 |
|
4x12=12 |
|
5x12=12 |
|
6x12=12 |
|
7x12=12 |
|
8x12=12 |
|
9x12=12 |
|
10x12=120 |
|
11x12=132 |
|
12x12=144 |
EX0309 แสดงสูตรคูณแม่ใดๆ ก็ได้ที่ผู้ใช้กำหนด
Input |
Output |
---|---|
4 |
1x4=4 |
1x4=4 |
|
2x4=8 |
|
3x4=12 |
|
4x4=16 |
|
5x4=20 |
|
6x4=24 |
|
7x4=28 |
|
8x4=32 |
|
9x4=36 |
|
10x4=40 |
|
11x4=44 |
|
12x4=48 |
EX0310 แสดงผลลัพธ์ของการรวมเลขคี่ทั้งหมดที่มากกว่า 0 แต่น้อยกว่า 200000
Input |
Output |
---|---|
999900000 |
EX03A แสดงผลคูณทั้งหมดของเลขคู่ที่อยู่ระหว่าง 200 กับ 2000
EX03B คำนวณยอดเงินฝากธนาคารหลังปีที่ 20
EX03C คำนวณยอดเงินคืนกยศ.หลังจากปีที่ 5
EX03D คำนวณเกรดเฉลี่ยของนักศึกษาวิทยาการคอมพิวเตอร์หลังภาคเรียนที่ 1 ปีการศึกษา 2561