Browse Source

Re-added Tom's Code

Kenneth van Ewijk 11 năm trước cách đây
mục cha
commit
1a167b8f35
1 tập tin đã thay đổi với 57 bổ sung5 xóa
  1. 57 5
      StatisticsCalculator.java

+ 57 - 5
StatisticsCalculator.java

@@ -327,15 +327,67 @@ public class StatisticsCalculator {
     
     public static int[] langsteTempStijgingPeriode(ArrayList<Double> array)
     {
+        ArrayList<Double> maxTempDag = new ArrayList<Double>();
+        ArrayList<Integer> periodeLengteList = new ArrayList<Integer>();
+        ArrayList<Integer> periodeStartList = new ArrayList<Integer>();
+        
         int[] index = new int[2];
         int index1 = 0;
         int index2 = 0;
+        int indexStart = 0;
+        int indexEind = 1;
+        int periodeLengte = 0;
+        int i = 0;
+        double maxTemp = 0; 
         
-        //Code
-        
-        index[0] = index1;
-        index[1] = index2;
-        return index;
+        //berekent maximale temp. per dag
+        for(double db : array)
+        {
+           i ++;
+           if(i % 1440 == 0)
+           {
+               maxTempDag.add(maxTemp);
+               maxTemp = 0;
+           }
+           
+           if(db > maxTemp) 
+           {
+               maxTemp = db;
+           }    
+        }        
+        
+        for(int t = 1; t < maxTempDag.size(); t ++)  //zoekt naar periodes van temp.stijgingen
+        { 
+            if (maxTempDag.get(t) > maxTempDag.get(t - 1))
+            {                
+                indexEind ++;
+            }
+            
+            if (maxTempDag.get(t) <= maxTempDag.get(t - 1))
+            {
+               periodeLengte = indexEind - indexStart;
+               periodeLengteList.add(periodeLengte);
+               periodeStartList.add(indexStart);
+               indexStart = indexEind;
+            }
+        } 
     }
     
+        Integer tempMax = Collections.max(periodeLengteList); //onthoudt de grootste periode van een temp.stijging
+        
+        for (int u = 0; u < periodeLengteList.size(); u ++) //pakt de index van de grootste periode
+        {
+            if (tempMax == periodeLengteList.get(u))
+            {
+                index1 = u;
+                index2 = tempMax - u;
+            }
+        }
+        
+        index[0] = index1 * 1440;
+        index[1] = index2 * 1440;
+        return index; 
+    }       
+}
+    
 }