I did not bother to name this...

From Scorching Hedgehog, 1 Month ago, written in Plain Text, viewed 34 times.
URL http://codebin.org/view/cea52e71 Embed
Download Paste or View Raw
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace Dates
  8. {
  9.     public class Program
  10.     {
  11.         public static int CountDays(int d1, int m1, int y1)
  12.         {
  13.             int[] month = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 };
  14.             int daysInMonths1 = 0;
  15.             for (int i = 0; i < m1 - 1; i++)
  16.             {
  17.                 daysInMonths1 = daysInMonths1 + month[i];
  18.             }
  19.             int let1 = y1 - 2000;
  20.             int daysInYears1 = 0;
  21.             for (int i = 0; i < let1; i++)
  22.             {
  23.                 if (i % 4 != 0) daysInYears1 += 365;
  24.                 else daysInYears1 += 366;
  25.             }
  26.             if (let1 % 4 == 0 && m1 > 2 || let1 % 4 == 0 && m1 == 2 && d1 == 29) daysInYears1++;
  27.             int days1From2000 = d1 + daysInMonths1 + daysInYears1;
  28.  
  29.             return days1From2000;
  30.         }
  31.        
  32.         public static int WorkingWithDates(int d1 = 0, int m1 = 0,int y1 = 0,int d2 = 0,int m2 = 0, int y2 = 0)
  33.         {
  34.  
  35.             int vis1 = y1 % 4; int vis2 = y2 % 4;
  36.             if ((d1 > 30 && ((m1 != 1) || (m1 != 3) || (m1 != 5) || (m1 != 7) || (m1 != 8) || (m1 != 10) || (m1 != 12))) ||
  37.                 (d2 > 30 && ((m2 != 1) || (m2 != 3) || (m2 != 5) || (m2 != 7) || (m2 != 8) || (m2 != 10) || (m2 != 12))) ||
  38.                 (m1 > 12) || (m2 > 12) || (d1 > 31) || (d2 > 31) || (m1 == 2) && (vis1 != 0) && (d1 > 28) ||
  39.                 (m2 == 2) && (vis2 != 0) && (d2 > 28) || (y1 + y2 < 4000) || (m1 == 2) && (d1 > 29))
  40.             {
  41.                 Console.WriteLine("Ошибка ");
  42.                 Console.ReadKey();
  43.                 Environment.Exit(0);
  44.             }
  45.  
  46.             int kol1 = CountDays(d1, m1, y1);
  47.             int kol2 = CountDays(d2, m2, y2);
  48.  
  49.             if (kol1 == kol2) { Console.WriteLine("Даты одинаковые"); Console.ReadKey(); Environment.Exit(0); }
  50.            
  51.             int daysBetweenDates = Math.Abs(kol1 - kol2);
  52.             int dayOfWeek = Math.Min(kol1, kol2) % 7 - 1;
  53.             if (dayOfWeek == -1) dayOfWeek = 6;
  54.            
  55.             if (daysBetweenDates < 7) { Console.WriteLine("0"); return 0; }
  56.  
  57.             switch (dayOfWeek)
  58.             {
  59.                 case 0:
  60.                     daysBetweenDates = daysBetweenDates - 2;
  61.                     break;
  62.                 case 1:
  63.                     daysBetweenDates = daysBetweenDates - 1;
  64.                     break;
  65.                 case 2:
  66.                     daysBetweenDates = daysBetweenDates - 0;
  67.                     break;
  68.                 case 3:
  69.                     daysBetweenDates = daysBetweenDates - 6;
  70.                     break;
  71.                 case 4:
  72.                     daysBetweenDates = daysBetweenDates - 5;
  73.                     break;
  74.                 case 5:
  75.                     daysBetweenDates = daysBetweenDates - 4;
  76.                     break;
  77.                 case 6:
  78.                     daysBetweenDates = daysBetweenDates - 3;
  79.                     break;
  80.             }
  81.             Console.WriteLine($"{dayOfWeek}");
  82.             Console.WriteLine($"{daysBetweenDates}");
  83.             Console.WriteLine($"{daysBetweenDates / 7}");
  84.             return daysBetweenDates / 7;
  85.         }
  86.  
  87.         public static void Main(string[] args)
  88.         {
  89.             Console.WriteLine("Введите две даты в формате дд.мм.гггг ");
  90.             string firstDate = Console.ReadLine();
  91.             string secondDate = Console.ReadLine();
  92.  
  93.             string[] dataA = firstDate.Split(new char[] { '.' });
  94.             string[] dataB = secondDate.Split(new char[] { '.' });
  95.            
  96.             int d1 = 0, m1 = 0, y1 = 0, d2 = 0, m2 = 0, y2 = 0;
  97.             if (!(Int32.TryParse(dataA[0], out d1) && Int32.TryParse(dataA[1], out m1) && Int32.TryParse(dataA[2], out y1) &&
  98.                 Int32.TryParse(dataB[0], out d2) && Int32.TryParse(dataB[1], out m2) && Int32.TryParse(dataB[2], out y2)))
  99.             {
  100.                 Console.WriteLine("Ошибка ");
  101.                 Console.ReadKey();
  102.                 Environment.Exit(0);
  103.             }
  104.  
  105.             WorkingWithDates(d1, m1, y1, d2, m2, y2);
  106.             Console.ReadKey();
  107.         }
  108.        
  109.  
  110.     }
  111. }
  112.  
  113.  
  114.  
  115.  
  116. тесты
  117.  
  118. using System;
  119. using Microsoft.VisualStudio.TestTools.UnitTesting;
  120. using Dates;
  121.  
  122. namespace UnitTestProject1
  123. {
  124.     [TestClass]
  125.     public class UnitTest1
  126.     {
  127.  
  128.         // Тестируем високосные года
  129.         [TestMethod]
  130.         public void TestMethod1()
  131.         {
  132.             Assert.AreEqual(Program.WorkingWithDates(27, 02, 2008, 28, 03, 2008), 3);
  133.         }
  134.         [TestMethod]
  135.        
  136.         public void TestMethod2()
  137.         {
  138.             Assert.AreEqual(Program.WorkingWithDates(01, 02, 2016, 07, 03, 2016), 5);
  139.         }
  140.         [TestMethod]
  141.         public void TestMethod3()
  142.         {
  143.             Assert.AreEqual(Program.WorkingWithDates(03, 05, 2016, 16, 05, 2016), 1);
  144.         }
  145.         [TestMethod]
  146.         public void TestMethod4()
  147.         {
  148.             Assert.AreEqual(Program.WorkingWithDates(20, 02, 2012, 16, 03, 2012), 3);
  149.         }
  150.         [TestMethod]
  151.  
  152.         // Тестируем обычные года и крайние ситуации
  153.         public void TestMethod5()
  154.         {
  155.             Assert.AreEqual(Program.WorkingWithDates(08, 10, 2018, 15, 10, 2018), 1);
  156.         }
  157.         [TestMethod]
  158.         public void TestMethod6()
  159.         {
  160.             Assert.AreEqual(Program.WorkingWithDates(07, 08, 2017, 13, 08, 2017), 0);
  161.         }
  162.         [TestMethod]
  163.         public void TestMethod7()
  164.         {
  165.             Assert.AreEqual(Program.WorkingWithDates(10, 09, 2017, 24, 09, 2017), 1);
  166.         }
  167.         [TestMethod]
  168.         public void TestMethod8()
  169.         {
  170.             Assert.AreEqual(Program.WorkingWithDates(01, 05, 2015, 5, 06, 2015), 4);
  171.         }
  172.         [TestMethod]
  173.         public void TestMethod9()
  174.         {
  175.             Assert.AreEqual(Program.WorkingWithDates(01, 12, 2015, 04, 01, 2016), 4);
  176.         }
  177.         [TestMethod]
  178.         public void TestMethod10()
  179.         {
  180.             Assert.AreEqual(Program.WorkingWithDates(01, 06, 2013, 08, 06, 2013), 0);
  181.         }
  182.     }
  183. }
  184.  

Reply to "I did not bother to name this..."

Here you can reply to the paste above