Các thuật toán về số học sẽ giúp bạn làm quen với thuật toán đơn giản, thường gặp để bạn dễ dàng tiếp cận, làm quen với cách trình bày thuật toán.

Một số bài toán số học cơ bản gồm:

  • – Giải phương trình bậc 2
  • – Tính tổng n số nguyên đầu tiên
  • – Tính và in ra n số trong dãy Fibonaci
  • – In tam giác ngược

Phần này sẽ giúp bạn rèn luyện câu lệnh điều kiện và câu lệnh lặp trong lập trình.

Bài 1: Viết chương trình nhập vào 3 số a,b,c và tìm nghiệm của phương trình bậc 2: ax2 + bx + c = 0.

Về lý thuyết

Về mặt lý thuyết chúng ta đều biết cách giả phương trình bậc 2 như sau:

  • Nếu a = 0 thì phương trình sẽ trở thành bx+c=0, chúng ta đã giải ở phần trước.
  • Nếu a<>0, tính delta = b2 – 4*a*c
  • Nếu delta<0, phương trình vô nghiệm
  • Nếu delta =0 thì phương trình sẽ có một nghiệm kép x=-b/2a
  • Nếu delta>0 thì phương trình có 02 nghiệm x1 = (-b + sqrt(delta))/2a, x2 = (-b - sqrt(delta) )/2a

Phân tích các bước

  • Đầu vào: nhập các giá trị a, b và c
  • Đầu ra: Tính ra nghiệm x

Các bước thực hiện:

Nhập vào các giá trị a, b và c

Kiểm tra a

   Nếu a =0

      Kiểm tra b

        Nếu b=0

          Kiểm tra c

            Nếu c=0 Thông báo phương trình có vô số nghiệm

            Nếu c<>0 thông báo phương trình vô nghiệm

        Nếu b<>0

            Thông báo phương trình có 1 nghiệm x=-c/b

    Nếu a<>0, tính delta

        Kiểm tra delta

        Nếu delta <0 Thông báo phương trình vô nghiệm

        Nếu delta =0 Thông báo phương trình có một nghiệm kép x=-b/2a

        Nếu delta >0  Thông báo phương trình có 02 nghiệm phương trình có 02 nghiệm x1 = (-b + sqrt(delta))/2a, x2 = (-b -sqrt(delta))/2a

 

Cách biểu diễn thuật toán

Trong trường hợp này, tôi sử dụng ngôn ngữ giả.

Declare int a,b,c

        Double delta  

Input a,b,c

If a=0 then

     If b =0 then

          If c=0 then

              Print ‘Phương trình có vô số nghiệm’

          Else

              Print ‘Phương trình vô nghiệm’

     Else

          Print ‘Phương trình có nghiệm x=%f’,-c/b

Else

     delta = b*b – 4*a*c

     If delta <0

          Print ‘Phương trình vô nghiệm’

     Else If delta = 0

              Print ‘Phương trình có một nghiệm kép x=%f’,-b/2a

          Else

              Print ‘Phương trình có 02 nghiệm x1= %f, x2=%f”, -b + sqrt(delta)/2*a, -b - sqrt(delta)/2*a

Biểu diễn thuật toán bằng chương trình Java

import static java.lang.Math.sqrt;

public class QuadraticEquation {

public static void main(String[] args) {
    int a=1, b=2, c=1;
    quardraticEquationFunction(a, b, c);
}

// Ham giai phuong trinh bac 2
static void quardraticEquationFunction(int a, int b, int c){
   double delta;
   if(a==0)
       if(b==0)
           if(c==0)
               System.out.println("Phuong trinh co vo so nghiem");
           else
               System.out.println("Phuong trinh vo nghiem");
       else
           System.out.println("Phuong trinh co mot nghiem x=" + -c/b);
   else{
       delta=b*b-4*a*c;
       if(delta<0)
           System.out.println("Phuong trinh vo nghiem");
       else if(delta==0)
           System.out.println("Phuong trinh co mot nghiep ke x= " + -b/(2*a));
       else
           System.out.format("Phuong trinh co 02 nghiem x1= %.2f%n va x2 = %.2f%n ",
               (-b + sqrt(delta))/2*a, (-b - sqrt(delta))/2*a);
    }
}
}

 

Bài tiếp: Thuật toán tính tổng một dãy số

Bài trước: Cơ bản về thuật toán

Comments



Blog này nhằm mục đích chia sẻ các kiến thức thực tế liên quan đến ngành công nghiệp phần mềm nhằm giúp các bạn trẻ định hướng tốt hơn trong việc chọn lựa nghề nghiệp của mình. Chúng tôi rất mong nhận được sự đóng góp, chia sẽ của các anh chị có kinh nghiệm cũng như các bạn trẻ.

 Học thuật toán

Hướng dẫn học thuật toán

 Thiết kế Cơ sở dữ liệu

Hướng dẫn thiết kế cơ sở dữ liệu.

 Học lập trình

Hướng dẫn dành cho người mới học lập trình.

 Hot or Not

Phân tích xu hướng công nghệ lập trình

 Phân tích thiết kế hệ thống

Phân tích và thiết kế hệ thống phần mềm

 Scrum Methodology

Bàn về mô hình phát triển phần mềm.