標題:
C# 7 407 隨機抽樣工作日
[打印本頁]
作者:
may
時間:
2024-1-8 22:30
標題:
C# 7 407 隨機抽樣工作日
TQC+ 物件導向程式語言
最新一次更新時間:2024-01-05 15:00:32
1. 題目說明:
請新增一個主控台應用程式,加入C:\ANS.CSF\CS04資料夾中的CSD04.cs進行編寫。依下列題意進行作答:以輸入2018的數字做為西元年份及亂數種子,取得及輸出該年十個不重複的工作日日期,使輸出值符合題意要求。檔案名稱請另存新檔為CSA04.cs,儲存於C:\ANS.CSF\CS04資料夾,再進行評分。
2. 設計說明:
請撰寫程式,輸入一個2000-2018之間的數值,請檢查不可超出2000-2018的邊界。
此數值做為西元年份及亂數種子,取得十個不重複的工作日日期並輸出,工作日定義是週一至週五,輸出格式如:【2018:3/7 3/10 4/9 5/22 6/5 8/7 8/24 9/11 11/6 12/5】,日期間以半形空格隔開。
3. 輸入輸出:
輸入說明
1個2000-2018之間的數值,做為西元年份及亂數種子
輸出說明
10個工作日日期(日期間以半形空格隔開)
(輸出最後一行後不自動換行)
範例輸入1
2018
範例輸出1
2018:12/24 1/31 8/21 5/31 12/13 11/28 7/11 4/25 2/23 2/26
範例輸入2
2019
範例輸出2
error
4. 評分項目:
(1) 符合設計說明輸出正確格式配分 20
作者:
may
時間:
2024-1-9 09:36
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSA04
{
class CSA04
{
static void Main(string[] args)
{
try
{
//TODO
int seed = int.Parse(Console.ReadLine());
if (seed < 2000 || 2018 < seed)
{
throw new ArgumentException("seed should be in [2000, 2018]");
}
HashSet<string> set = new HashSet<string>();
// define the day randge: ${seed}/1/1 - ${seed+1}/1/1(excluded)
DateTime startDay = new DateTime(seed, 1, 1);
DateTime endDay = new DateTime(seed + 1, 1, 1);
int totalDays = (endDay - startDay).Days; // consider the leap year
Random rand = new Random(seed);
DateTime randomDay;
TimeSpan offset; // day to ticks
string randomDate;
while (set.Count() < 10)
{
offset = new TimeSpan(
TimeSpan.TicksPerDay * rand.Next(0, totalDays));
randomDay = startDay + offset;
if (randomDay.DayOfWeek == DayOfWeek.Saturday
|| randomDay.DayOfWeek == DayOfWeek.Sunday)
{
continue;
}
randomDate = randomDay.Month + "/" + randomDay.Day;
set.Add(randomDate);
}
Console.Write("{0}:{1}",
seed, String.Join(" ", set));//TODO
}
catch
{
Console.Write("error");
}
Console.ReadKey();
}
}
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2