Giải phương trình bậc 2 bằng Ruby

Xin chào!

Một bài toán xưa như diễm nhưng mình vẫn muốn chia sẻ cho bạn. nếu hay thì hãy vỗ tay còn không hay hãy ném đá comment nhé :)

1. Thuật toán giải phương trình bậc 2

Đầu tiên cho họ nhập chán chê 3 tham số a, b, c đi, xem đó kiểm tra xem a khác 0 không? Nếu có thì mới nói chuyện, còn không thì xéo không giải =)).

Sau khi kiểm tra a khác 0 thì đi tính delta, tiếp theo kiểm tra xem delta có lớn hơn 0 không? Nếu lớn hơn thì hiện ra 2 biến x1 – x2, còn không kiểm tra delta bằng 0 không? nếu bằng thì in ra nghiệm kép x1 = x2 cuối cùng không bằng thì hiện ra vô nghiệm.

Sau đây là thuật toán mô tả bằng ảnh mà  mình đã trộm cắp được trên mạng:

Giải phương trình bậc 2 bằng Ruby
Giải phương trình bậc 2 bằng Ruby

2. Giải bằng ruby

Đầu tiên gọi thư viện cmath của ruby, thư viện này cung cấp các hàm cho ta tính toán

require 'cmath'

Sau đó bắt người dùng nhập vào 3 tham số (hay hệ số), hàm gets là hàm lấy dữ liệu từ bàn phím người dùng nhập, vì số mà người dùng nhập vào là string nên ta phải convert sang kiểu int thì mới có thể thực hiện được các phép tính (+/-/*/%)

puts "Nhap tham so A:"
a = gets()
a = a.to_i
puts "Nhap tham so B:"
b = gets()
b= b.to_i
puts "Nhap tham so C:"
c = gets()
c = c.to_i

Còn dưới đây là đoạn kiemr tra và hiện nghiệm.

a2 = a*2

if a != 0 then
  delta = (b*b) - (4*a*c)
  sqrt_delta = CMath.sqrt(delta)
  if delta > 0 then
    x1 = (-b + sqrt_delta)/a2
    x2 = (-b - sqrt_delta)/a2
    puts "x1: #{x1} - x2: #{x2}"
  else
    if delta == 0 then
      x = -b/a2
      puts "PT nghiệm kép x1 = x2 = : #{x}"
    else
      puts "Vô nghiệm"
    end
  end
else
  puts "Ko phải ptb2"
end

Mọi ý kiến đóng góp hãy để lại comment :)

Enjoy!

Các bài viết không xem thì tiếc:

Chia sẻ là sexy

dotrinh

Một lập trình viên dũng cảm, hòa đồng, luôn sống tích cực và anh ấy quay tay khỏe và khéo trong môn bi lắc :) Xem thêm thông tin tại trang -> Giới thiệu

Có “Giải phương trình bậc 2 bằng Ruby”

Thảo luận

This site uses Akismet to reduce spam. Learn how your comment data is processed.