Alqoritm Analizi
Kvadrat tənliyi aşağıdakı formula istifadə edərək həll edilməlidir
burada kvadrat tənliyin diskriminantıdır, -yə bərabərdir.
Diskriminantın işarəsindən asılı olaraq, üç halı nəzərdən keçiririk:
: kök yoxdur;
: bir kök;
: iki kök.
İki kök halında, onlar artan sıra ilə çıxışa verilməlidir.
Alqoritm İmplementasiyası
Tənliyin əmsalları tam ədədlər olduğu və köklər (əgər mövcuddursa) də tam ədədlər olduğundan, hesablamaları tam ədədlər üzərində aparırıq. Giriş məlumatlarını oxuyuruq.
scanf("%d %d %d", &a, &b, &c);
Kvadrat tənliyin diskriminantını və köklərini hesablayırıq.
d = b * b - 4 * a * c;
Diskriminantın işarəsindən asılı olaraq, cavabı çıxışa veririk.
if (d < 0) printf("No roots\n"); else if (d == 0) { x1 = -b / (2 * a); printf("One root: %d\n", x1); } else { x1 = (-b - sqrt(1.0*d)) / (2 * a); x2 = (-b + sqrt(1.0*d)) / (2 * a); printf("Two roots: "); if (x1 < x2) printf("%d %d\n", x1, x2); else printf("%d %d\n", x2, x1); }
Java İmplementasiyası
import java.util.*; public class Main { public static void main(String []args) { Scanner con = new Scanner(System.in); int a = con.nextInt(); int b = con.nextInt(); int c = con.nextInt(); int d = b * b - 4 * a * c; double x1 = (-b - Math.sqrt(1.0 * d)) / (2 * a); double x2 = (-b + Math.sqrt(1.0 * d)) / (2 * a); if (d == 0) System.out.printf("One root: %.0f\n", x1); else if (d < 0) System.out.printf("No roots\n"); else if (x1 < x2) System.out.printf("Two roots: %.0f %.0f\n", x1, x2); else System.out.printf("Two roots: %.0f %.0f\n ", x2, x1); con.close(); } }