Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.Scanner;
- class Calka implements Runnable{
- // private double dolnaGranica;
- // private double gornaGranica;
- private double zakresDolny;
- private double zakresGorny;
- private double krok;
- private double x;
- public double pole;
- public double getPole(){
- //System.out.println(pole);
- return pole;
- }
- public Calka(double dolnaGranica, double gornaGranica, double odcinek, double zakresDolny, double zakresGorny){
- // this.dolnaGranica = dolnaGranica;
- // this.gornaGranica = gornaGranica;
- this.krok = odcinek;
- this.zakresDolny = zakresDolny;
- this.zakresGorny = zakresGorny;
- }
- int i = 0;
- public void run(){
- //
- // System.out.println("zakres dolny " + zakresDolny);
- // System.out.println("zakres gorny " + zakresGorny);
- // System.out.println("odcinek :" + krok);
- double dolna = zakresDolny;
- double gorna;
- while(dolna < zakresGorny){
- gorna = dolna + krok;
- x = (wartoscFunkcji(dolna) + wartoscFunkcji(gorna)) * krok / 2;
- pole = pole + x;
- //i ++;
- //System.out.println(i);
- dolna = gorna;
- }
- //System.out.println( " wynik watku " + pole);
- }
- private double wartoscFunkcji(double t) {
- return t*t-1;
- }
- }
- public class Pole {
- public static void main(String[] args) {
- double dolnaGranica;
- double gornaGranica;
- // double zakresDolny = 0;
- // double zakresGorny = 0;
- double liczbaKrokow;
- double liczbaWatkow = 8;
- // double pole = 0;
- Scanner sc = new Scanner(System.in);
- System.out.print("Podaj dolną granicę: ");
- dolnaGranica = sc.nextDouble();
- System.out.print("Podaj gorną granicę: ");
- gornaGranica = sc.nextDouble();
- System.out.print("Podaj liczbę krokow: ");
- liczbaKrokow = sc.nextInt();
- System.out.print("liczbeWatkow: ");
- liczbaWatkow = sc.nextInt();
- sc.close();
- double odcinek = (gornaGranica - dolnaGranica) / liczbaWatkow;
- liczbaKrokow = liczbaKrokow / liczbaWatkow;
- double krok = odcinek / liczbaKrokow;
- double dolna = dolnaGranica;
- double gorna;
- ArrayList<Thread> threads = new ArrayList<Thread>();
- ArrayList<Calka> calki = new ArrayList<Calka>();
- long startTime = System.nanoTime();
- for(int k = 0; k < liczbaWatkow; k++){
- gorna = dolna + odcinek;
- //System.out.println(dolna);
- //System.out.println(gorna);
- Calka calka = new Calka(dolnaGranica, gornaGranica, krok , dolna, gorna);
- Thread watek = new Thread(calka);
- threads.add(watek);
- calki.add(calka);
- watek.start();
- dolna = gorna;
- }
- int licznik = 0;
- while(licznik < liczbaWatkow) {
- licznik = 0;
- for(Thread t : threads) {
- //System.out.println(licznik);
- //System.out.println(t.getState());
- if(!t.isAlive()) {
- licznik++;
- }
- }
- }
- double wynik = 0.0;
- for(int i=0; i<calki.size(); i++) {
- wynik += calki.get(i).getPole();
- //System.out.println("tmp wynik " + wynik);
- }
- System.out.println("Wynik : " + wynik);
- long endTime = System.nanoTime();
- long duration = (endTime - startTime);
- System.out.println("Wykonano w: " + duration/1000000+ " ms.");
- // //Calka calka = new Calka(dolnaGranica, gornaGranica);
- //Thread watek = new Thread(calka);
- //watek.start();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement