Board logo

標題: C# 7 408 轉換工時數 [打印本頁]

作者: may    時間: 2024-1-8 22:31     標題: C# 7 408 轉換工時數

TQC+ 物件導向程式語言
最新一次更新時間:2024-01-05 15:02:05

1. 題目說明:
請新增一個主控台應用程式,加入C:\ANS.CSF\CS04資料夾中的CSD04.cs進行編寫。依下列題意進行作答:輸入工時數,再輸出相對應的日期格式,使輸出值符合題意要求。檔案名稱請另存新檔為CSA04.cs,儲存於C:\ANS.CSF\CS04資料夾,再進行評分。

2. 設計說明:
請撰寫程式,讓使用者輸入工作總時數,輸入格式為時:分,時與分之間以一半形冒號隔開。一天工時為8小時,請依總工時計算,並輸出工作天數:小時:分鐘,如【2d:4h:0m】,中間以一個半形冒號分隔。若輸入文字或非法時間,請輸出【error】。

3. 輸入輸出:
輸入說明
工作總時數,格式為時:分(時與分之間以一半形冒號隔開)

輸出說明
工時計算結果(輸出最後一行後不自動換行)

範例輸入1
20:00
範例輸出1
2d:4h:0m

範例輸入2
06:50
範例輸出2
0d:6h:50m

範例輸入3
5:01
範例輸出3
0d:5h:1m

範例輸入4
19:99
範例輸出4
error

4. 評分項目:
(1) 符合設計說明輸出正確格式        配分20
作者: may    時間: 2024-1-9 09:37

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;

  6. using System.Globalization;

  7. namespace CSA04
  8. {
  9.     class CSA04
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             try
  14.             {
  15.                 //TODO
  16.                 int days, hours, minutes;
  17.                 ParseTime(Console.ReadLine(), out hours, out minutes);
  18.                 days = hours / 8;
  19.                 hours = hours % 8;
  20.                 Console.Write("{0}d:{1}h:{2}m", days, hours, minutes); //TODO
  21.             }
  22.             catch
  23.             {
  24.                 Console.Write("error");
  25.             }
  26.             Console.ReadKey();
  27.         }

  28.         static void ParseTime(string s, out int hours, out int minutes)
  29.         {
  30.             //DateTime dt = DateTime.ParseExact(
  31.             //    Console.ReadLine(), "HH:mm", CultureInfo.InvariantCulture);
  32.             string[] tokens = s.Split(':');
  33.             if (tokens.Length != 2)
  34.             {
  35.                 throw new ArgumentException();
  36.             }

  37.             // check the rule: \d{1,2}:\d{1,2}
  38.             if (tokens[0].Length > 2 || tokens[1].Length > 2)
  39.             {
  40.                 throw new ArgumentException();
  41.             }

  42.             hours = int.Parse(tokens[0]);
  43.             minutes = int.Parse(tokens[1]);
  44.             if (hours < 0 || minutes < 0 || minutes > 59)
  45.             {
  46.                 throw new ArgumentException();
  47.             }
  48.         }
  49.     }
  50. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2