3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
C#撰寫[ 門禁卡系統-任意輸入通行時段,最後輸出可通行的三個時段 ] 演算法     PS 寫出這一個程式,我確定自己打死不寫韌體,因為如果不用這一招浪費記憶體的方法,我寫不出來其他的解法   條件規定: 01.任意輸入通行時段,最後輸出可通行的三個時段 02.要能具有疊加重複和取最大的設定 03.計算出可通行的三個時段,時段1和時段2就直接取出,時段3就取出剩餘設定最大範圍       using System; using System.Collections.Generic; using System.Linq; using System.Text;   namespace CS_Console_Passage_time {     //任意輸入通行時段,最後輸出可通行的三個時段     //要能具有疊加重複和取最大的設定     //計算出可通行的三個時段,時段1和時段2就直接取出,時段3就取出剩餘設定最大範圍       /*測試驗用程式碼     class Program     {         static void Pause()         {             Console.Write(“Press any key to continue . . . “);             Console.ReadKey(true);         }         static void Main(string[] args)         {             Passage_Time.init();//所有變數清空             Passage_Time.setValue((0* 60+ 0), (7 * 60 + 10));//00:00~07:10             Passage_Time.setValue((8* 60+ 10), (14 * 60 + 55));//08:10~14:55             //Passage_Time.setValue((14 * 60 + 00), (14 * 60 + 55));//14:00~14:55             //Passage_Time.setValue((14 * 60 + 00), (15 * 60 + 55));//14:00~15:55             Passage_Time.setValue((20 * 60 + 30), (21 * 60 + 00));//20:30~21:00             Passage_Time.setValue((22 * 60 + 30), (23 * 60 + 59));//22:30~23:59             Passage_Time.calculateValue();               String StrOutput = “”;               String StrStart1 = String.Format(“{0:00}:{1:00}”, Passage_Time.m_Start1 / 60, Passage_Time.m_Start1 % 60);             String StrEnd1 = String.Format(“{0:00}:{1:00}”, Passage_Time.m_End1 / 60, Passage_Time.m_End1 % 60);             StrOutput=String.Format(“第一組:{0}~{1}”,StrStart1,StrEnd1);             Console.WriteLine(StrOutput);               String StrStart2 = String.Format(“{0:00}:{1:00}”, Passage_Time.m_Start2 / 60, Passage_Time.m_Start2 % 60);             String StrEnd2 = String.Format(“{0:00}:{1:00}”, Passage_Time.m_End2 / 60, Passage_Time.m_End2 % 60);             StrOutput = String.Format(“第二組:{0}~{1}”, StrStart2, StrEnd2);             Console.WriteLine(StrOutput);               String StrStart3 = String.Format(“{0:00}:{1:00}”, Passage_Time.m_Start3 / 60, Passage_Time.m_Start3 % 60);             String StrEnd3 = String.Format(“{0:00}:{1:00}”, Passage_Time.m_End3 / 60, Passage_Time.m_End3 % 60);             StrOutput = String.Format(“第三組:{0}~{1}”, StrStart3, StrEnd3);             Console.WriteLine(StrOutput);             Pause();         }     }     */     class Passage_Time     {         public static bool[] m_Minute = new bool[60 * 24];//紀錄一天所有分鐘數的狀態記憶體         public static int m_Start1, m_End1;//儲存第一組通行時間         public static int m_Start2, m_End2;//儲存第二組通行時間         public static int m_Start3, m_End3;//儲存第三組通行時間         public static void init()//先把所有變數清空的函數         {             for (int i = 0; i < (60 * 24); i++)             {                 m_Minute[i] = false;             }             m_Start1 = -1; m_End1 = -1;             m_Start2 =- 1; m_End2 = -1;             m_Start3 = -1; m_End3 = -1;         }         public static void setValue(int start, int end)//填入想要設定時段         {             if (end < (60 * 24))//防止白癡不知一天24小時,一小時是60分鐘             {                 for (int i = start; i <= end; i++)                 {                     m_Minute[i] = true;                 }             }         }         public static void calculateValue()//計算出可通行的三個時段,時段1和時段2就直接取出,時段3就取出剩餘設定最大範圍         {             int state=0;             for (int i = 0; i < (60 * 24); i++)             {                 switch (state)                 {                 case 0:                     if (m_Minute[i] == true)                     {                         m_Start1 = i;                         state++;//1                     }                     break;                 case 1:                     if (m_Minute[i] == false)                     {                         m_End1 = (i – 1);                         state++;//2                     }                     break;                 case 2:                     if (m_Minute[i] == true)                     {                         m_Start2 = i;                         state++;//3                     }                     break;                 case 3:                     if (m_Minute[i] == false)                     {                         m_End2 = (i – 1);                         state++;                     }                     break;                 case 4:                     if (m_Minute[i] == true)                     {                         m_Start3 = i;                         state++;//4                     }                     break;                 case 5:                     if (m_Minute[i] == true)                     {                         m_End3 = i;                     }                     break;                 }                   //—                 //防呆用                 if (m_Start1 < 0)                 {                     m_Start1 = 0;                 }                 if (m_Start2 < 0)                 {                     m_Start2 = 0;                 }                 if (m_Start3 < 0)                 {                     m_Start3 = 0;                 }                 if (m_End1 < 0)                 {                     m_End1 = 0;                 }                 if (m_End2 < 0)                 {                     m_End2 = 0;                 }                 if (m_End3 < 0)                 {                     m_End3 = 0;                 }                 //–             }         }     } }            

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦