3. การคำนวณตัวเลข

Computing with Numbers

Binder Download

3.1. จุดประสงค์รายสัปดาห์

  1. อธิบายแนวคิดของการแบ่งประเภทข้อมูลได้

  2. เข้าใจและสามารถใช้งานข้อมูลประเภทตัวเลขได้

  3. อธิบายการเขียนข้อมูลประเภทตัวเลขแบบต่างๆได้

  4. อธิบายฟังก์ชันที่สำคัญจาก library ชือ math ได้

  5. สามารถเขียนโปรแกรมเพื่อหาผลรวมได้

  6. สามารถเขียนโปรแกรมเพื่ออ่านค่าและประมวลผลตัวเลขได้

  7. เขียนคำสั่งรับตัวเลขจากผู้ใช้และวนลูป loop ได้

3.2. ตัวเลขประเภทต่างๆ (Numeric Data Types)

  • ข้อมูลที่จัดเก็บและควบคุมโดย Program เรียกว่า data.

  • data ที่เป็นค่าของตัวเลขมีอยู่ 2 แบบ

  1. ตัวเลขจำนวนเต็ม Z เช่น 5, 4, 3, 6, -3, 1, 7, 0 int

  2. ตัวเลขที่มีทศนิยม Q เช่น .25, .10, .05, 3.01, 3.97e12 float

  3. รูปแบบการจัดเก็บ Z, Q ในคอมพ์ต่างกัน

  4. ดังนั้นประเภทของมูลของ Z, Q จึงต่างกัน

  5. ประเภทของข้อมูล เรียกว่า 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 q + r\]

โดย

  • เมื่อหาร \(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

  1. ทฏษฏีตัวเลข

ceil(x), fabs(x), factorial(n), floor(x), fmod(x, y) fsum(..), gcd(a, b), remainder(x, y)

  1. กลุ่มตรวจสอบ

isClose(x, y, rel_tol=1e-09, abs_tol=0.0), isfinite(x), isnan(x)

  1. ยกกำลังและลอการิทึม

exp(x), log(x, base), log2(x), log10(x), pow(x, y), sqrt(x)

  1. ตรีโกณมิติ

acos(x), asin(x), atan(x), atan2(y, x), cos(x), hypot(x, y), sin(x), tan(x)

  1. มุมและองศา

degrees(x), radians(x)

  1. ไฮเพอโบลาร์

acosh(x), asinh(x), atanh(x), cosh(x), sinh(x), tanh(x)

  1. พิเศษ

erf(x), erfc(x), gamma(x), lgamma(x)

  1. ค่าคงที่

pi, e, tau, inf, nan

3.12. ตัวอย่างโปรแกรม

ซอฟต์แวร์สำหรับเพื่อแก้สมการ \(ax^2 + bx + c = 0\)

  1. Analysis > ผู้ใช้ต้องการหาค่า \(x\) ที่ทำให้สมการ \(ax^2 + bx + c = 0\)

  2. Specification

Input - ค่าสัมประสิทธิ์ของสมการได้แก่ $a, b, c$
Output - ค่า $x$ ทั้งหมดที่ทำให้สมการ $ax^2 + bx + c = 0$
Process - คำนวณรากของสมการโดยใช้สมการ
\[x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}\]
  1. Create Design (Algorithm) > ใช้ลำดับการทำงาน Input -> Process -> Output

    • input ผู้ใช้กรอกค่า \(a, b, c\) ตามลำดับ

    • process

    1. คำนวณค่า \(x1 = \frac{-b + \sqrt{b^2 - 4ac}}{2a}\)

    2. คำนวณค่า \(x2 = \frac{-b - \sqrt{b^2 - 4ac}}{2a}\)

    • output แสดงค่า \(x1, x2\)

  2. 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})')
  1. Test/Debug Program

รันโปรแกรมแล้วกรอกค่าทดสอบต่อไปนี้ ว่าสามารถทำงานได้จริงหรือมีข้อผิดพลาดหรือไม่?

ข้อมูลทดสอบชุดที่ 1

Input

Output

กรอกค่า a: 1

x1=-1.0, x2=-1.0

กรอกค่า b: 2

กรอกค่า c: 1

ข้อมูลทดสอบชุดที่ 2

Input

Output

กรอกค่า a: 1

x1=8.0, x2=-2.0

กรอกค่า b: -6

กรอกค่า c: -16

ข้อมูลทดสอบชุดที่ 3

Input

Output

กรอกค่า a: 1

x1=-5.0, x2=-1.0

กรอกค่า b: 6

กรอกค่า c: 5

ข้อมูลทดสอบชุดที่ 4

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\) คือ

\[v_s = v_0 + at\]

หน่วยวัด

  • ความเร่ง \(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 ตัวเลข

  1. Analysis > ผู้ใช้ต้องการหาค่าผลรวม ของตัวเลขที่ผู้ใชกรอก 5 ตัวเลข

  2. Specification

Input - ตัวเลข 5 ตัวเลข
Output - ผลรวม 5 ตัวเลข
Process - เก็บสะสมผลรวมของตัวเลขที่ผู้ใช้กรอกมาเรื่อยจนครบ 5 ตัวเลข
\[total = total + x\]

เมื่อ \(x\) แทนค่าที่ผู้ใช้กรอก

  1. 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

  2. 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}')
  1. Test/Debug Program

รันโปรแกรมแล้วกรอกค่าทดสอบต่อไปนี้ ว่าสามารถทำงานได้จริงหรือมีข้อผิดพลาดหรือไม่?

ตัวอย่างข้อมูลชุดที่ 1

Input

Output

กรอกค่า x: 1

ผลรวมคือ 15

กรอกค่า x: 2

กรอกค่า x: 3

กรอกค่า x: 4

กรอกค่า x: 5

ตัวอย่างข้อมูลชุดที่ 2

Input

Output

กรอกค่า x: -1

ผลรวมคือ 63

กรอกค่า x: 22

กรอกค่า x: 13

กรอกค่า x: 14

กรอกค่า x: 15

ตัวอย่างข้อมูลชุดที่ 3

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}')
ตัวอย่างข้อมูลชุดที่ 1

Input

Output

จำนวนตัวเลขที่ต้องการกรอก: 3

ผลรวมคือ 20

กรอกค่า x: 9

กรอกค่า x: 7

กรอกค่า x: 4

ตัวอย่างข้อมูลชุดที่ 1

Input

Output

จำนวนตัวเลขที่ต้องการกรอก: 2

ผลรวมคือ 29

กรอกค่า x: 15

กรอกค่า x: 14

3.16.3. Exercise

  • EX0304 จงเขียนโปรแกรมเพื่อหาผลรวมของ gpa ของนักศึกษาตามจำนวนนักศึกษาที่ผู้ใช้ระบุ

ข้อมูลนำเข้า (Input)

บรรทัดแรกเป็นตัวเลขจำนวนเต็ม \(n\) ระบุจำนวนนักศึกษา

\(n\) บรรทัดถัดมาเป็นตัวเลขทศนิยมระบุค่า gpa ของนักศึกษาแต่ละคน

ข้อมูลส่งออก (Output)

ตัวเลขทศนิยมหนึ่งค่า ระบุผลรวมของ gpa ของนักศึกษาทั้งหมด

ตัวอย่างข้อมูลนำเข้า-ส่งออก

ตัวอย่างข้อมูลชุดที่ 1

Input

Output

3

10.43

3.22

3.55

3.66

ตัวอย่างข้อมูลชุดที่ 2

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 ปี

  1. Analysis

  • เงินลงทุนมีผลตอบแทน

  • แสดงยอดเงินรวมในปีที่ 10

  • Inputs: เงินลงทุน(principal), อัตราค่าตอบแทนร้อยละ(rate)

  • Output: ยอดเงินรวมในปีที่ 10

  1. Specification

  1. Program Investment

  2. Inputs

    1. เงินลงทุน (principal)

    2. อัตราค่าตอบแทน (rate)

  3. Output

    1. ยอดลงทุนรวมในปีที่ 10

  4. Relationship (สมการความสัมพันธ์)

    1. ยอดเงินลงทุนรวม(ปีนี้) = ยอดเงินลงทุนรวม(ปีที่แล้ว) + ยอดเงินลงทุนรวม(ปีที่แล้ว)*อัตราค่าตอบแทน

  1. Create Design (Algorithm) > ใช้ลำดับการทำงาน Input -> Process -> Output

    • input รับตัวเลข ยอดเงินลงทุน (principal)

    • input รับตัวเลขทศนิยม อัตราค่าตอบแทน (rate) เช่น ร้อยละ 5 กรอก 0.05 เป็นต้น

    • process

    • ทำซ้ำ 10 ครั้งสำหรับ 10 ปี

      • principal = principal + principal * rate

    • output แสดงค่า principal หลังจากครบ 10 ปี

  2. Implement Design

    principal, rate = eval(input('ต้นทุน, อัตราค่าตอบแทน: '))
    for year in range(0,10):
      principal = principal + principal * rate
    print('ยอดเงินลงทุนรวมหลังจากปีที่ 10 เป็น ', principal)
    
  3. 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!\) และมีนิยามดังนี้

\[n! = n \times (n-1) \times (n-2) \times ... \times 2 \times 1\]

ตัวอย่างการคำนวณ

\[\begin{split}5! = 5 \times 4 \times 3 \times 2 \times 1 \\ 9! = 9 \times 8 \times 7 \times 6 \times 5 \times 4 \times 3 \times 2 \times 1\end{split}\]

ตัวอย่างข้อมูลนำเข้า-ส่งออก

ตัวอย่างข้อมูล

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