Оцените на правильность и оптимальность кода
Код | using System;
public class Groups { public struct AFreq { public double StartF; public double EndF; public int Freq; public double StartT; public double EndT; public double DiffDisp; public double TheorFreq; public double DiffFreq; public double SqFreq; public bool Contains(double value) { if ((value >= Math.Round(StartF, 9)) && (value < Math.Round(EndF, 9))) return true; else return false; } } public AFreq[] ActualFreq; private AFreq[] TempFreq; public Groups() { } public int ConcateInterval(int Interval1, int Interval2){ if ((Interval1 > ActualFreq.Length) || (Interval2 > ActualFreq.Length)) throw new ArgumentException("Не верные аргументы!");
ActualFreq[Interval1].EndF = ActualFreq[Interval2].EndF; ActualFreq[Interval1].Freq += ActualFreq[Interval2].Freq; ActualFreq[Interval2].Freq = -1; return ActualFreq[Interval1].Freq; } public void Integration() { for (int i = 0; i < ActualFreq.Length; i++) { if ((ActualFreq[i].Freq < 5) && (ActualFreq[i].Freq != -1)) { if (i == 0) { for (int j = 1; j < ActualFreq.Length; j++) { if (ConcateInterval(i, j) >= 5) break; } } else if (i == ActualFreq.Length - 1) { ConcateInterval(i - 1, i); } else if (i > 0) { if (ActualFreq[i + 1].Freq < 5) { int k = i; for (int j = i + 1; j < ActualFreq.Length; j++) {
if (ConcateInterval(i, j) >= 5) { if (j == ActualFreq.Length - 1) i++; break; } else if (j == ActualFreq.Length - 1) { ConcateInterval(k - 1, i); } if (j == ActualFreq.Length - 1) i++; } } else { ConcateInterval(i - 1, i); } } } } int len = 0; for (int i = 0; i < ActualFreq.Length;i++ ) { if (ActualFreq[i].Freq != -1) { len++; } } TempFreq = new AFreq[len]; int z = 0; for (int i = 0; i < ActualFreq.Length; i++) { if (ActualFreq[i].Freq != -1) { TempFreq[z++] = ActualFreq[i]; } } ActualFreq = TempFreq; } }
|
|