Câu lệnh If then - Viết chương trình giải phương trình bậc hai

#Xác định bài toán
  • Input: Các hệ số a,b,c của phương trình
  • Ouput: Nghiệm của phương trình
#Ý tưởng
  • Ta sẽ dùng câu lệnh if then để giải quyết bài toán này.
  • Đầu tiên chúng ta sẽ tính delta của phương trình.
  • Nếu delta < 0 nghĩa là phương trình vô nghiệm và chương trình sẽ kết thúc.
  • Nếu delta = 0 nghĩa là phương trình có nghiệm kép.
  • Cuối cùng, nếu hai điều kiện kia không xảy ra nghĩa là delta > 0, chúng ta sẽ xuất ra hai nghiệm.
#Thuật toán
1.     Nhập lần lượt ba hệ số a, b. c.
2.     Tính delta := b*b - (4*a*c)
  • Nếu delta < 0 thì kết thúc chương trình, và thông báo phương trình vô nghiệm.
  • Nếu delta = 0 thì xuất ra màn hình giá trị nghiệm kép, x:= (-b-(sqrt (delta) )/(2*a).
  • Nếu delta > 0 thì xuất ra màn hình nghiệm  :                                                           x1:= (-b-sqrt(delta))/(2*a);     x2:= (-b+sqrt(delta))/(2*a);
#Chương trình
program tinh_phuong_trinh_bac_hai;
uses crt;
var a,b,c,delta :integer;
    x1,x2:real;
begin
clrscr;
   writeln('Moi nhap he so a: '); readln(a);
   writeln('Moi nhap he so b: '); readln(b);
   writeln('Moi nhap he so c: '); readln(c);
   delta := b*b - (4*a*c);
      if delta < 0 then writeln(' phuong trinh vo nghiem ');
      if delta = 0 then
         begin
            x1:= (-b-( sqrt (delta) ))/(2*a);
            writeln(' He phuong trinh co nghiem kep duy nhat la x1= ',x1:6:2 )
         end;
      if delta > 0 then
            begin
            x1:= (-b-sqrt(delta))/(2*a);
            x2:= (-b+sqrt(delta))/(2*a);
            write (' He phuong trinh co hai nghiem phan biet, x1= ',x1:6:2 ,' x2= ',x2:6:2);
            end;
readln;
end.

Comments

  1. nếu nhập hệ số a,b,c từ tệp input.txt và lưu kq vào tệp output.txt thì làm như thế nào ạ

    ReplyDelete
  2. nếu nhập hệ số a,b,c từ tệp input.txt và lưu kq vào tệp output.txt thì làm như thế nào ạ

    ReplyDelete
    Replies
    1. Trong sách tin học 11 có hướng dẫn dùng kiểu tệp đó bạn

      Để đọc dữ liệu từ tệp input.txt gồm 3 số viết trên một hàng, cách nhau một khoảng trắng
      var f1,f2:text;
      assign(f1,'input.txt');
      reset(f1);
      read(f1,a,b,c);
      close(f1);

      xuất kết quả, dĩ nhiên là bạn phải tính được x1 và x2 trước nhé
      assign(f2,'output.txt');
      rewrite(f2);
      writeln(f2,x1);
      writeln(f2,x2);
      close(f2);

      Delete

Post a Comment



» Vui lòng không spam vì nó sẽ bị xóa ngay sau đó.
» Nếu chèn code hãy mã hóa trước khi chèn vào nhận xét.
» Nếu thủ thuật Blog không áp dụng được thì hãy để lại URL blog để mình tiện kiểm tra.