Advertisement
Guest User

Untitled

a guest
Jan 29th, 2015
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.34 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Scanner;
  3.  
  4. class Calka implements Runnable{
  5. //  private double dolnaGranica;
  6. //  private double gornaGranica;
  7.     private double zakresDolny;
  8.     private double zakresGorny;
  9.     private double krok;
  10.     private double x;
  11.     public double pole;
  12.    
  13.     public double getPole(){
  14.         //System.out.println(pole);
  15.         return pole;
  16.     }
  17.    
  18.     public Calka(double dolnaGranica, double gornaGranica, double odcinek, double zakresDolny, double zakresGorny){
  19.     //  this.dolnaGranica = dolnaGranica;
  20.     //  this.gornaGranica = gornaGranica;
  21.         this.krok = odcinek;
  22.         this.zakresDolny = zakresDolny;
  23.         this.zakresGorny = zakresGorny;
  24.        
  25.     }
  26.    
  27.     int i = 0;
  28.     public void run(){
  29. //     
  30. //      System.out.println("zakres dolny "  + zakresDolny);
  31. //      System.out.println("zakres gorny "  + zakresGorny);
  32. //      System.out.println("odcinek :" + krok);
  33.         double dolna = zakresDolny;
  34.         double gorna;
  35.        
  36.         while(dolna < zakresGorny){
  37.             gorna = dolna + krok;
  38.            
  39.             x = (wartoscFunkcji(dolna) + wartoscFunkcji(gorna)) * krok / 2;
  40.             pole = pole + x;
  41.             //i ++;
  42.             //System.out.println(i);
  43.             dolna = gorna;
  44.          
  45.         }
  46.     //System.out.println( " wynik watku " + pole);
  47.     }
  48.    
  49.     private double wartoscFunkcji(double t) {
  50.         return t*t-1;
  51.     }
  52.    
  53. }
  54.  
  55. public class Pole {
  56.     public static void main(String[] args) {
  57.         double dolnaGranica;
  58.         double gornaGranica;
  59. //      double zakresDolny = 0;
  60. //      double zakresGorny = 0;
  61.         double liczbaKrokow;
  62.         double liczbaWatkow = 8;
  63. //      double pole = 0;
  64.        
  65.         Scanner sc = new Scanner(System.in);
  66.        
  67.         System.out.print("Podaj dolną granicę: ");
  68.         dolnaGranica = sc.nextDouble();
  69.        
  70.         System.out.print("Podaj gorną granicę: ");
  71.         gornaGranica = sc.nextDouble();
  72.        
  73.         System.out.print("Podaj liczbę krokow: ");
  74.         liczbaKrokow = sc.nextInt();
  75.        
  76.         System.out.print("liczbeWatkow: ");
  77.         liczbaWatkow = sc.nextInt();
  78.        
  79.         sc.close();
  80.        
  81.         double odcinek = (gornaGranica - dolnaGranica) / liczbaWatkow;
  82.         liczbaKrokow = liczbaKrokow / liczbaWatkow;
  83.        
  84.         double krok =  odcinek / liczbaKrokow;
  85.        
  86.         double dolna = dolnaGranica;
  87.         double gorna;
  88.        
  89.         ArrayList<Thread> threads = new ArrayList<Thread>();
  90.         ArrayList<Calka> calki = new ArrayList<Calka>();
  91.        
  92.         long startTime = System.nanoTime();
  93.         for(int k = 0; k < liczbaWatkow; k++){
  94.            
  95.             gorna = dolna + odcinek;
  96.             //System.out.println(dolna);
  97.             //System.out.println(gorna);
  98.            
  99.             Calka calka = new Calka(dolnaGranica, gornaGranica, krok , dolna, gorna);
  100.             Thread watek = new Thread(calka);
  101.            
  102.             threads.add(watek);
  103.             calki.add(calka);
  104.            
  105.             watek.start();
  106.            
  107.             dolna = gorna;
  108.         }
  109.        
  110.        
  111.         int licznik = 0;
  112.        
  113.         while(licznik < liczbaWatkow) {
  114.             licznik = 0;
  115.            
  116.             for(Thread t : threads) {
  117.                
  118.                 //System.out.println(licznik);
  119.                 //System.out.println(t.getState());
  120.                 if(!t.isAlive()) {
  121.                    
  122.                     licznik++;
  123.                 }
  124.                
  125.             }
  126.         }
  127.        
  128.        
  129.         double wynik = 0.0;
  130.        
  131.         for(int i=0; i<calki.size(); i++) {
  132.             wynik += calki.get(i).getPole();
  133.             //System.out.println("tmp wynik " + wynik);
  134.         }
  135.        
  136.         System.out.println("Wynik : " + wynik);
  137.         long endTime = System.nanoTime();
  138.         long duration = (endTime - startTime);
  139.         System.out.println("Wykonano w: " + duration/1000000+ " ms.");
  140. //      //Calka calka = new Calka(dolnaGranica, gornaGranica);
  141.         //Thread watek = new Thread(calka);
  142.        
  143.         //watek.start();
  144.     }
  145.    
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement