diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..7ce35c8 --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Les informations générales relatives à un assembly dépendent de +// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations +// associées à un assembly. +[assembly: AssemblyTitle("SD")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("SD")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly +// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de +// COM, affectez la valeur true à l'attribut ComVisible sur ce type. +[assembly: ComVisible(false)] + +// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM +[assembly: Guid("8e63e9b5-9970-493b-824d-acd0268ff0f9")] + +// Les informations de version pour un assembly se composent des quatre valeurs suivantes : +// +// Version principale +// Version secondaire +// Numéro de build +// Révision +// +// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut +// en utilisant '*', comme indiqué ci-dessous : +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/SD.csproj b/SD.csproj new file mode 100644 index 0000000..7cb7a40 --- /dev/null +++ b/SD.csproj @@ -0,0 +1,49 @@ + + + + + Debug + AnyCPU + {8E63E9B5-9970-493B-824D-ACD0268FF0F9} + Library + Properties + SD + SD + v4.6.1 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Step.cs b/Step.cs new file mode 100644 index 0000000..9a6f02d --- /dev/null +++ b/Step.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SD +{ + public class Step + { + int _first; + int _second; + + public int First + { + get { return _first; } + } + + public int Second + { + get { return _second; } + } + + public Step(int first, int second) + { + _first = first; + _second = second; + } + } +} diff --git a/StepDivider.cs b/StepDivider.cs new file mode 100644 index 0000000..14f0b94 --- /dev/null +++ b/StepDivider.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SD +{ + public class StepDivider : IEnumerable + { + //Step number = 2 + + private Step[] _steps = new Step[] { }; + private int _number; + private int _divider; + + private int initSteps(int reste) + { + if (reste == 0) + { + _steps = new Step[_divider]; + return 1; + } + else + { + _steps = new Step[_divider + 1]; + return 2; + } + } + + public StepDivider(int number, int divider) + { + _number = number; + _divider = divider; + + int divided = number / divider; + int reste = number % divider; + int add = initSteps(reste); + + for (int x = 1; x < divider + add; x++) + { + int first_number = divided * (x - 1); + int second_number = divided * (x); + + if (x == 1) //Check for first iter + { + first_number = 0; + second_number = divided * x; + } + + if (x == divider + 1) //Check for last iter + { + second_number = first_number + reste; + } + + _steps[x - 1] = new Step(first_number, second_number); + } + } + + public IEnumerator GetEnumerator() + { + for (int x = 0; x < _steps.GetLength(0); x += 1) + { + yield return new Step(_steps[x].First, _steps[x].Second); + } + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +}