Availible Double Range : double « Data Types « C# / C Sharp

Home
C# / C Sharp
1.2D Graphics
2.Class Interface
3.Collections Data Structure
4.Components
5.Data Types
6.Database ADO.net
7.Date Time
8.Design Patterns
9.Development Class
10.Event
11.File Stream
12.Generics
13.GUI Windows Form
14.Internationalization I18N
15.Language Basics
16.LINQ
17.Network
18.Office
19.Reflection
20.Regular Expressions
21.Security
22.Services Event
23.Thread
24.Web Services
25.Windows
26.Windows Presentation Foundation
27.XML
28.XML LINQ
C# / C Sharp » Data Types » doubleScreenshots 
Availible Double Range
        

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Schedule.Utils
{
    public class AvailibleDoubleRange 
    {
        private double _start;
        private double _end;

        public double Start get return _start;  internal set _start = value; } }
        public double End get return _end; internal set _end = value; } }

        public AvailibleDoubleRange(double start, double end)
        {
            _start = start;
            _end = end;

            AvailibleRange = new DoubleRange[] { new DoubleRange() { Start = start, End end } };
        }

        public DoubleRange[] AvailibleRange get; private set; }

        public void SubtractRange(Double start, Double end)
        {
            List<DoubleRange> newRanges = new List<DoubleRange>(AvailibleRange);
            
            for (int i = newRanges.Count - 1; i >= 0; i--)
            {
                if (start <= newRanges[i].Start && end >= newRanges[i].End)
                {
                    // subtract range is larger then item, remove the item
                    newRanges.RemoveAt(i);
                }
                else if (start == newRanges[i].Start)
                {
                    // if the range start is equal to the start of the other item, adjust start
                    newRanges[inew DoubleRange(end, newRanges[i].End);
                }
                else if (end == newRanges[i].End)
                {
                    // if the range end is equal to the start of the other item, adjust end
                    newRanges[inew DoubleRange(newRanges[i].Start, start);
                }
                else if (start > newRanges[i].Start && end < newRanges[i].End)
                {
                    // split the ranges
                    DoubleRange leftRange = new DoubleRange(){ Start = newRanges[i].Start, End = start};
                    DoubleRange rightRange = new DoubleRange() { Start = end, End = newRanges[i].End };

                    newRanges.RemoveAt(i);
                    newRanges.Add(leftRange);
                    newRanges.Add(rightRange);
                }
            }

            AvailibleRange = newRanges.ToArray();
        }

        public void AddRange(DoubleRange range)
        {
            throw new NotSupportedException();
        }

        internal AvailibleDoubleRange Clone()
        {
            AvailibleDoubleRange copy = new AvailibleDoubleRange(this.Start, this.End);
            copy.AvailibleRange = this.AvailibleRange.Clone() as DoubleRange[];
            return copy;
        }
    }

    public struct DoubleRange
    {
        private double _start;
        private double _end;

        public DoubleRange(double start, double end)
        {
            _start = start;
            _end = end;
        }

        public double Start get return _start; internal set _start = value; } }
        public double End get return _end; internal set _end = value; } }
    }
}

   
    
    
    
    
    
    
    
  
Related examples in the same category
1.Compute the area of a circleCompute the area of a circle
2.the differences between int and doublethe differences 
   between int and double
3.Implement the Pythagorean TheoremImplement the Pythagorean Theorem
4.Talking to Mars: double value calculationTalking to Mars: double value calculation
5.converts Fahrenheit to Celsiusconverts Fahrenheit to Celsius
6.Epsilon, PositiveInfinity, NegativeInfinity, MaxValue, MinValue
7.double number format: 0:C, 0:D9, 0:E, 0:F3, 0:N, 0:X, 0:x
8.Format double value
9.Get Decimal Places
10.Automatic conversion from double to string
11.An int, a short, a float, and a double are added together giving a double result.
12.Test to see if a double is a finite number (is not NaN or Infinity).
13.Double.Epsilon Field represents the smallest positive Double value that is greater than zero.
14.Truncates the specified double.
15.Is Nearly Equal
16.Shifts the given value into the range
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.