Realizacja algorytmu rozwiązywania równania kwadratowego w javie

 Algorytm rozwiązywania równania kwadratowego

Przykład realizacji algorytmu rozwiązywania równania kwadratowego

import static java.lang.Math.sqrt;
import java.util.Scanner;
public class Kwadratowe {
  public static void main(String[] args) {
    double a,b,c;
    Scanner klaw=new Scanner(System.in);
    System.out.print("a=");
    a=klaw.nextFloat();
    System.out.print("b=");
    b=klaw.nextFloat();
    System.out.print("c=");
    c=klaw.nextFloat();
    if(a==0) 
      liniowe(b,c);
    else{
      double delta;
      delta=b*b-4*a*c;
      if(delta<0)
        System.out.println("Brak rozwiązań");
      else
      if(delta==0){
        double x;
        x=-b/(2*a);
        System.out.print("Jedno podwójne rozwiązanie x = ");
        System.out.println(x);
      }
      else{
        double x1, x2;
        x1=(-b+sqrt(delta))/(2*a);
        x2=(-b-sqrt(delta))/(2*a);
        System.out.print("x1 = ");
        System.out.println(x1);
        System.out.print("x2 = ");
        System.out.println(x2);
      }
    }
  }
  static void liniowe(double a, double b){
    if(a==0)
      if(b==0)
        System.out.println("Rownaie tozsamosciowe");
      else
        System.out.println("Rownanie sprzeczne");
    else{
      double x;
      x=-b/a;
      System.out.print("Równanie liniowe, x = ");
      System.out.println(x);
    }
  }
}

 

Linia programu Opis Blok algorytmu
 1 Nasz program będzie korzystał z funkcji sqrt (pierwiastek kwadratowy) zawartej w bibliotece Math. Musimy ją zaimportować.  -
2 Będziemy również korzystali z klasy Scanner z biblioteki util javy. Klasa Scanner zostanie użyta do wczytywania danych wejściowych w naszym programie. -
3 Rozpoczynamy definicję klasy Kwadratowe. -
4 Rozpoczynamy definicję funkcji main(). W języku java wykonywanie programu rozpoczyna się od wywołania publicznej funkcji statycznej main() zawartej w klasie, której nazwa jest zgodna z nazwą programu (program musi zostać zapisany w pliku Kwadratowe.java i następnie skompilowany do pliku Kwadratowe.class). 1
5 Deklarujemy zmienne a, b ,c, z których za chwilę będziemy korzystali. -
6 Deklarujemy i inicjujemy zmienną klaw jako obiekt typu Scanner. Podajemy, że źródłem danych tekstowych będzie strumień System.in, czyli klawiatura. -
7 - 12 Operacje wejścia/wyjścia, w których pobierane są dane wejściowe - współczynniki a, b oraz c równania. Wyświetlamy przy tym na ekranie komunikaty zachęty dla użytkownika.  2
 13 Instrukcja warunkowa sprawdzająca, czy na pewno mamy do czynienia z równaniem kwadratowym. Jeżeli warunek jest spełniony (a jest równe 0), nasze równianie jest równaniem liniowym.
3
14 Instrukcja wykonywana gdy warunek w instrukcji z linii 13 został spełniony (a jest równe 0). Wywołujemy funkcję realizującą algorytm rozwiązywania równania liniowego - liniowe(b, c).  4
15 Rozpoczynamy blok instrukcji wykonywanych gdy warunek z linii 13 nie został spełniony, a więc gdy a jest różne od zera, czyli nasze równanie jest równaniem kwadratowym. -
16 Deklarujemy zmienną delta. -
17 Obliczamy wartość delta. 5
18 Instrukcja warunkowa sprawdzająca, czy delta < 0. 6
19 Jeśli warunek z linii 18 jest spełniony (delta < 0) równanie nie posiada rozwiązań. Wypisujemy komunikat o braku rozwiązań. 7
20 Rozpoczynamy instrukcję wykonywaną gdy warunek z linii 18 nie został spełniony (delta jest większa lub równa 0). -
21 Instrukcja warunkowa sprawdzająca, czy delta = 0. 8
22 Deklarujemy zmienną x, w której umieścimy rozwiązanie (jedno, podwójne - delta = 0). -
23 Obliczamy i zapisujemy w zmiennej x rozwiązanie równania. 9
24 - 25 Wyświetlamy obliczony wynik. 10
26 Koniec bloku instrukcji wykonywanych dla delta równego 0. -
27 Rozpoczynamy blok programu realizowany w sytuacji gdy nie był spełniony warunek delta = 0 (oraz wcześniejsze delta < 0 i a  ≠ 0). -
28 Deklarujemy zmienne x1 i x2, w których umieścimy rozwiązania równania. -
29 - 30 Obliczamy rozwiązania i ich wartości przypisujemy do zmiennych x1 i x2. 11
31 - 34 Wyświetlamy obliczony wynik - dwa rozwiązania równania kwadratowego. 12
35 - 36 Kończymy rozpoczęte bloki instrukcji z linii 27 oraz 15. -
37 Nawias klamrowy kończący definicję funkcji main, a więc realizację całego programu. 13
38 - 50 Deklarujemy i definiujemy funkcję liniowe, realizującą algorytm rozwiązywania równania liniowego. 4
51 Nawias klamrowy kończący definicję klasy Kwadratowe. -