Viết chương trình giải phương trình bậc nhất và phương trình bậc hai với các hệ số được nhập từ file input và kết quả được xuất ra file output (Có xử lý ngoại lệ đầu vào) Kiến thức cần có
Định dạng đầu vàoGồm hai dòng:
Định dạng đầu raGồm nhiều dòng hiển thị tùy theo các trường hợp như sau:
Ví dụ:2 3 5 8 Phuong trinh vo nghiem 1 0 0 Phuong trinh co vo so nghiem 1 3 6.8 Phuong trinh co mot nghiem duy nhat: x = -2.2666666666666666 2 4 4 1 Phuong trinh co nghiem kep: x1 = x2 = -0.5 2 -5 6.7 9 Phuong trinh co hai nghiem phan biet la: x1 = -0.8296332885075604 x2 = 2.1696332885075607 2 kteam 7 8.5 Dinh dang dau vao khong hop le! 4 1 7 8.5 Vui long chon mot trong hai chuc nang: 1. Giai phuong trinh bac nhat 2. Giai phuong trinh bac hai
Gợi ý
Code mẫu#Import thu vien math de su dung ham sqrt tinh can bac 2 import math #Khoi lenh co the phat sinh loi try: #Mo file voi mode='r' de doc file with open('Bai2.10.inp', 'r') as fileInp: #Doc dong du lieu dau tien tu file #Su dung phuong thuc strip de loai bo ky tu xuong dong hay khoang trang dongDauTien = fileInp.readline().strip() #Truong hop 1: Giai phuong trinh bac nhat if dongDauTien == '1': #Doc dong du lieu thu hai tu file dongThuHai = fileInp.readline() a, b = map(float, dongThuHai.split()) #Thuat toan giai phuong trinh bac nhat if a == 0: if b == 0: thongBao = "Phuong trinh co vo so nghiem" else: thongBao = "Phuong trinh vo nghiem" else: thongBao = "Phuong trinh co mot nghiem duy nhat: \nx = {}".format(-b / a) #Truong hop 2: Giai phuong trinh bac hai elif dongDauTien == '2': #Doc dong du lieu thu hai tu file dongThuHai = fileInp.readline() a, b, c = map(float, dongThuHai.split()) #Thuat toan giai phuong trinh bac hai if a == 0: if b == 0: if c == 0: thongBao = "Phuong trinh co vo so nghiem" else: thongBao = "Phuong trinh vo nghiem" else: thongBao = "Phuong trinh co mot nghiem duy nhat: \nx = {}".format(-c / b) else: #Tinh delta delta = b * b - 4 * a * c #Kiem tra cac truong hop cua delta if delta > 0: x1 = float((-b + math.sqrt(delta)) / (2 * a)) x2 = float((-b - math.sqrt(delta)) / (2 * a)) thongBao = "Phuong trinh co hai nghiem phan biet la: \nx1 = {} \nx2 = {}".format(x1, x2) elif delta == 0: x = -b / (2 * a) thongBao = "Phuong trinh co nghiem kep: \nx1 = x2 = {}".format(x) else: thongBao = "Phuong trinh vo nghiem" #Truong hop khong chon dung chuc nang else: thongBao = "Vui long chon mot trong hai chuc nang:\n1. Giai phuong trinh bac nhat\n2.Giai phuong trinh bac hai" #Khoi lenh duoc thuc thi khi xay ra loi "Khong tim thay file input" except FileNotFoundError: thongBao = "Khong tim thay file input!" #Khoi lenh duoc thuc thi khi xay ra loi "Sai dinh dang dau vao" except: thongBao = "Dinh dang dau vao khong hop le!" #Mo file voi mode='w' de ghi file with open('Bai2.10.out', 'w') as fileOut: #Xuat thong bao ra file out fileOut.write(thongBao)Kết luậnTrong bài này, Kteam đã hướng dẫn bạn cách viết chương trình giải phương trình bậc nhất và phương trình bậc hai với các hệ số được nhập từ file input và kết quả được xuất ra file output (Có xử lý ngoại lệ đầu vào) Ở bài tiếp theo, chúng ta sẽ cũng nhau học cách viết chương trình HIỂN THỊ 10 SỐ TỰ NHIÊN ĐẦU TIÊN RA MÀN HÌNH TRÊN TỪNG DÒNG. Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để phát triển bài viết tốt hơn. Đừng quên " Luyện tập - Thử Thách - Không ngại khó!" Tải xuống
Nếu việc thực hành theo hướng dẫn không diễn ra suôn sẻ như mong muốn. Bạn cũng có thể tải xuống PROJECT THAM KHẢO ở link bên dưới! Thảo luậnNếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng. |