2007年5月23日 星期三

Excel 表格有條件合併


問題描述:

存在有三張Excel的學生名冊,分別紀載學生之獎學金、就學貸款和減免費用,以下分別描述:

  • 獎學金名冊有三個欄位,分別為學號、獎學金分類和金額,存在同一學號領取多筆獎學金
  • 就學貸款有二個欄位,分別為學號和貸款金額,同一學號只會有一筆就學貸款金額
  • 減免費用有二個欄位,分別為學號和減免事項,同一學號只會有一筆就學貸款金額

今吾人想輸出一張新的表格,此表格包含學生學號、獎學金分類、獎學金金額、就學貸款金額和減免事項等五個欄位,其中
  1. 以獎學金名冊為主,進行輸出,也就是說若獎學金名冊不重複學號有2000筆,就學貸款有5000筆,減免費用有1000筆,最後會輸出2000筆紀綠
  2. 不存在相同學號的紀錄筆
  3. 若重複領取獎學金之學生必須合併(金額相加,並取最高獎學金金額的分類)
  4. 每筆紀錄需輸出領獎學金之學生是否同時有就學貸款金額或減免事項
  5. 不得使用資料庫操作

技術解析:

  1. 將三張Excel分別輸出為三個以Tab分隔的文字檔
  2. 分別讀入三個文字檔
  3. 當讀入獎學金文字檔時,要判斷是否有重複學號,有的話要進行金額累加並調整獎學金分類
  4. 利用三個一維陣列物件儲存不同文字檔內容,並以學號為主要索引
  5. 循序走訪獎學金陣列,判斷獎學金陣列的學號是否存在另外二個陣列之中
  6. 完成

困難度:*
時間複雜度:O(n)
程式語言:C#
預估時間:2 小時

程式下載

原碼下載

2007年5月13日 星期日

[轉錄] 保誠人壽推出「金鑽年年變額年金保險」


保誠人壽推出「金鑽年年變額年金保險」 零保單前置費 退休金累積更快速 五月底前投保 免收前10年保單維持費用 ( 2007/05/07 )
(台北訊)看好退休市場的需求,保誠人壽推出「金鑽年年變額年金保險」,這個商品以退休規劃為主,具有零前置費用、低保單維持費的特色,保戶可以將保費全額投入投資帳戶中,更快速、穩健地累積退休準備金。配合新退休商品上市,保誠人壽推出5月優惠方案,即日起至5月31日止購買「金鑽年年變額年金保險」,即可享有前10年免收每月帳戶價值0.08%的保單維持費用。

年金險具有保證給付的特性,只要被保險人生存,就可以依約定持續領取年金金額,最適合用來保障退休後穩定的收入。根據保誠人壽2007年退休調查報告顯示,33%的民眾選擇保險作為退休理財的工具,而其中購買年金險的僅佔13%,顯見年金險市場仍有很大的成長空間。為了協助客戶做好退休準備,保誠人壽推出的「金鑽年年變額年金」,結合了年金險與投資型商品的優點,保戶不但享有最低保本的壽險保障,更可以選擇穩健的投資標的來獲取理想的投資報酬率。

保誠人壽台灣區總經理張志明表示,定期定額、長期投資、複利累積是退休金準備的三大原則。年金險在被保險人生存期間可以提供穩定而持續的退休收入給付,連結基金更具有長期獲利的機會,在歐美是很普遍的退休準備理財商品。

以30歲男性投保「保誠人壽金鑽年年變額年金保險」為例,每月固定繳交基本保險費10,000元,並選擇自60歲開始領取年金,保證期間20年。假設年金宣告利率為2%,當投資報酬率為3%時,每年可領取的年金金額為248,784元,平均每月約有2萬元的生活費;當投資報酬率為7%時,年金金額為495,942元,每月有近4萬2千元的生活費,可以享有經濟自足的老年生活。若不幸於年金保證期間身故,剩餘的年金還可以照顧遺族,受益人可選擇領取年金至保證期滿,或一次領取未支領的年金餘額。

在保單費用方面,「保誠人壽金鑽年年變額年金保險」免收保單前置費用、免收保單行政管理費用、免收轉換投資標的手續費,年金遞延期間每月僅收保單帳戶價值的0.08%的保單維持費用,若保戶要解約或部分解約,第11保單年度起免收解約費用。此外,這張保單還可附加醫療險、意外險與豁免保險費附約,保戶不但享有完整的醫療保障,豁免保險費附約更可以讓保戶做好風險控制,避免因失能或疾病而讓儲蓄退休金的計畫中斷。

為協助客戶進行退休規劃,保誠人壽特別規劃了專業課程,業務人員必須上課並通過測驗方可銷售退休商品。保誠人壽強調,退休準備必須先建立正確的退休規劃觀念,除了瞭解自己的財務狀況和退休目標外,還要選擇適合自己的理財方式。保誠人壽將藉由專業退休規劃的業務團隊,協助客戶瞭解自己的退休數字,並以完整的退休商品,為客戶打造健康與富足的退休生活。

看好退休市場的商機,保誠人壽大力推動退休規劃專案。圖為保誠人壽高階主管,由左至右分為別台灣區總經理張志明、業務系統總經理朱信福、行政系統總經理暨財務長張鎮坤。

本文轉錄自 保誠人壽新聞中心
有興趣讀者請 與我聯繫

2007年5月12日 星期六

整數分割

三、整數分割(Parition of Integer),如:4 = 4、3+1、2+2、2+1+1、1+1+1,共五種不重複分割方法,輸入任意數 n,列出所有分割方式和共有幾種分割方法。

input:
4

output:
1+1+1+1
1+1+2
2+2
3+1
4
共5種

困難度:**
時間複雜度:c1((1+5^(1/2))/2)^n + c2((1-5^(1/2))/2)^n,
      c1+c2 = 0,(c1(1+5^(1/2))/2)+(c2(1- 5^(1/2))/2)=1
程式語言:C++
預估時間:2 小時

解題原理:
1. 先取得使用者輸入欲分割的正整數
2. 任意正整數 n 必可寫為 n 個 1 連加,暫存在陣列 A[n]
3. 由左而右開始,一次處理鄰近二個數,讓右邊的數=右邊的數+左邊的數,之後把左邊的數設為零
4. 將目前陣列元素進行由小排到大,暫存排序後的陣列 B,印出不重複的陣列 B[n] 非零的數連加字串
5. 重複步驟 3,直到開始處理的位置到 n-1
6. 完成

程式下載

原碼下載


參考來源:長榮大學2007校內程式設計競賽複賽 試題 三

Armstrong

二、數學上 Armstrong 數可表示為 a^3 + b^3 + c^3 = abc,寫出所有三位數的 Armstrong 數。

output:
370

困難度:*
時間複雜度:O(n)
程式語言:C++
預估時間:15 分鐘

解題原理:
1. 先判斷欲輸出幾位數的阿姆斯壯數
2. 分別產生各個位數0~9的排列方式進行阿姆斯壯數比較
3. 完成

程式下載


原碼下載

參考來源:長榮大學2007校內程式設計競賽複賽 試題 二

十進位轉換

一、輸入十進位數和轉換基數為十六進位數
  輸入十進位數和轉換基數為八進位數

input:
255 16
100 8

output:
ff
144

困難度:*
時間複雜度:N/A
程式語言:C++
預估時間:5 分鐘

解題原理:
1. 先取得使用者輸入欲轉換的數字和基數
2. 使用內建的函式庫直接印出結果

程式下載


原碼下載


參考來源:長榮大學2007校內程式設計競賽複賽 試題 一

2007 數位學習實務論壇



2007 數位學習實務論壇於2007/05/11由元培科技大學資訊工程學系舉辦,邀請相關數位學習專家學者進行演講,論壇行程如上圖所示,演講內容大略可包括現今數位學習如何運用新的資訊技術達到不同的應用,像是使用RFID、Web 2.0或是語音辨識技術等。以下為演講語音線上播放:

  • 第一場:數位學習與環境教育
    演講者:國立中央大學環境工程研究所 王鵬堯教授



























  • 第二場: Learning 2.0
    演講者:資策會創新應用服務研究所 蔡澤銘副主任



























  • 第三場:數位學習與華語文學習應用
    演講者:資策會創新應用服務研究所 蔡德祿組長



























  • 第四場:學習數位化應用與數位化教材製作
    演講者:資策會數位教育研究所 李鎮宇經理


























            註:以上線上語音為個人收藏整理,如有任何問題請來信告之。

            2007年5月5日 星期六

            隨意桌面,數位溝通

            下載

            軟體名稱:Ad Hoc Desktop
            軟體版本:v 1.0.0
            軟體大小:450 KB
            軟體作者:cuteofdragon
            軟體授權:免費軟體
            發佈時間:2007/05/06

            背景概述
            在行動裝置和數位家庭娛樂的旋風席捲全球下,人與人之間透過網路溝通的機會也大幅度的提升;MSN Messenger、SKype等即時通訊軟體提供豐富和多樣性的需求,從單純的文字傳訊到語音聊天和最後的視訊會議,清楚地突顯出一種重要的概念-「數位溝通」。

            在視訊會議普及的數位時代中,人們目前依然停留在人與人之間的溝通與互動,對於人與人和電腦之間的三方溝通缺乏有效的機制,也就是說人們無法透過眼前電腦螢幕的表現即時的告訴遠在另一端的朋友,像是會議簡報內容、行車電子地圖、軟體操作等;因此要是有一個「隨意桌面」的概念讓這樣的理想實現,那數位溝通將更能具體實現遠大的一句話:「電腦將無所不在」。
            軟體導覽

            為了在數位時代實現數位溝通的理想,為了在網路世界創造隨意桌面的情境,本軟體運用新一代Microsoft .NET 2.0解決方案實現「隨意桌面,數位溝通」的理想,透過群組會議進行將桌面、視訊和語音一次雙向的傳送給所有的群組成員,運用TCP Socket、DirectSound和InteropServices技術讓數位溝通無遠弗屆。其中,TCP Socket傳送/接收序列化 串流資料,DirectSound提供語音錄製/播放功能,InteropServices連接Win32 API和COM元件將桌面序列化傳送。

            本軟體實現「隨意桌面,數位溝通」中創造了前所未見的數位時代溝通模式,人們可以視桌面為個人在網路上溝通的代理人,無論是在家、學校或是出外工作,皆可以隨時隨地的傳送您的代理人。在現今寬頻網路普及下,本軟體對於頻寬的限制亦相當重視,在隨意桌面傳送過程,平均每秒只需要30kbytes,這是因為本軟體實作螢幕比對、畫面壓縮和語音壓縮等技術,意味著「隨意桌面,數位溝通」的可行性、創新性和未來性。

            TCP Socket
            使用System.Net.Sockets.TcpListener傾聽串流伺服器168連接埠,運用封包轉送原理將用戶端欲傳送的隨意桌面畫面轉送給邀請的另一個用戶端,即不需考慮兩地之間的防火牆限制。在畫面傳送時,撰寫System.Net.Sockets.Socket動態地產生AdHocDesktop_TcpObject物件,接收桌面和語音原始byte陣列,並使用System.Net.Sockets.NetworkStream進行物件序列化,物件序列化使用 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter。為了有效地減少資料量,本軟體撰寫螢幕比對原理和畫面及語音的壓縮,使隨意桌面在傳送期間,每秒平均為30kbytes,符合寬頻網路需求。

            在螢幕比對原理為將螢幕緩衝的畫面(如何取得螢幕緩衝詳見InteropService說明)以System.Drawing.Bitmap物件觀看,然後取出System.Drawing.Imaging.BitmapData,隨即可取得一維原始byte陣列,並根據Bitmap影像規格BGR原理進行比對。首先先取得一張比對依據影像,接下來取得的影像和前一張比對,相同的byte設為0。對於每一張影像的byte陣列採用System.IO.Compression.GZip壓縮;在另一端取得影像後,根據前一張完整影像進行影像重建,其減少傳送頻寬資料原理即相同byte設為0時,使用GZip即可有效地減少資料的儲存。在語音的壓縮亦使用GZip進行壓縮(如何取得語音緩衝詳DirectSound說明)。

            DirectSound
            採用Microsoft.DirectX.DirectSound.CaptureBuffer取得語音緩衝,Microsoft.DirectX.DirectSound.SecondaryBuffer進行語音播放,CaptureBuffer和SecondaryBuffer採用環狀緩衝方式實作,也就是說緩衝區為一固定大小,而存在二個指標,一個指向當前讀取/寫入的位置,另一個指向下一次寫入/讀取的位置,當抵達緩衝區結尾時即回到緩衝區開頭。

            由於緩衝必需由其他執行緒取得,在即時資料傳送時必需使用Microsoft.DirectX.DirectSound.Notify和Microsoft.DirectX.DirectSound. BufferPositionNotify,透過定位CaptureBuffer/SecondaryBuffer緩衝區在讀取/寫入第n個索引時進進行執行緒回呼,並定義回呼方法,詳細實作細節詳見程式碼。

            InteropService
            透過System.Runtime.InteropServices.DllImport定義呼叫Win32 API的靜態方法,其中GetDesktopWindow()、GetDC()為取得桌面獨一無二Handle,根據CreateCompatibleDC()、CreateCompatibleBitmap()將Handle所指向的螢幕緩衝區轉換成HBitmap指標,最後透過System.Drawing.Graphics將HBitmap轉換成System.Drawing.Bitmap物件,完成螢幕緩衝取得。

            軟體需求
            作業軟體 相容Microsoft Windows XP SP2
            相依套件 Microsoft .NET Framework 2.0
            Microsoft DirectX 9.0c
            硬體需求 CPU:Pentium IV 以上相容等級
            記憶體:512 MB 以上
            硬碟空間:8 GB 以上
            選擇配備 視訊攝影機
            音效卡 / 麥克風

            安裝執行
            1. 解壓縮AdHocDesktop_v1.0.0.zip。
            2. 需由一台電腦執行AdHocDesktop.StreamServer.exe開啟隨意桌面串流伺服器,並確認本機運行此軟體電腦的網路IP位址,例如:192.168.1.2。
            3. 欲進行隨意桌面傳送時,在別台電腦執行AdHocDesktop.User.exe開啟隨意桌面用戶端,並輸入隨意串流伺服器網路IP位址。
            4. 接著進行登入,帳號密碼可任意輸入。
            5. 開始啟動隨意桌面傳送。

            隨意桌面傳送示意圖



            原文下載

            本軟體榮獲2006微軟潛能創意盃台灣區軟體設計組 第三名。

            媒體串流製造精靈

            下載軟體
            使用手冊
            請先安裝 mpeg4_pack

            軟體名稱:MEA Suite 2006
            軟體版本:v 1.0.9
            軟體大小:78.5 MB
            軟體作者:cuteofdragon
            軟體授權:免費軟體
            發佈時間:2007/05/06

            說明:MEA Suite(以下簡稱本軟體)是設計來提供遠距教學和非同步教學的輔助工具,透過本軟體您可以預先錄製你想要的影片和後製完成的影片,其中包括軟體使用、影片展示、個人Demo、教學示範…等等,無論你在世界任何地方,只要透過本軟體就可以輕鬆達到這些功能。本軟體採用Microsoft最先進的影片壓縮技術和串流技術來傳送和保存您錄製的影片,只要支援進階串流格式(ASF)的電腦,您完全不需要考慮任何時間、任何地方觀看您所錄製或觀看別人錄製的影片。透過本軟體,您可以錄製一系列的影片,像是Photoshop教學、3D Max教學、個人履歷…等來發佈在全球資訊網(Internet),讓世界各地的人觀看您精心錄製的影片、實為工作或是學習的一大利器。

            本軟體榮獲長榮大學資訊管理學系第十屆畢業專題第一名(電子全文 )。
            本軟體榮獲第十屆全國大專院校資訊管理實務專題暨資訊服務創新競賽佳作。

            N 邊形面積求解

            輸入任意n邊形座標,求面積。(先輸入幾邊形,再依序輸入各頂點座標)

            input
            4
            1 1
            5 1
            5 3
            1 3

            output
            8.0000

            input
            4
            2 1
            5 1
            2 3
            1 3

            output
            3.9800

            input
            4
            1 0
            0 1
            -1 0
            0 -1

            output
            2.0040

            困難度:**
            時間複雜度:O(n^2)
            程式語言:C++
            預估時間:2 小時

            解題原理:
            1. 先取得使用者輸入的邊數
            2. 使用一維陣列分別儲存x和y陣列座標
            3. 記算x座標和y座標的最小和最大即為最小可包含n邊形的矩形
            4. 取矩形內足夠的隨機亂數的座標,判斷落於n邊形的座標數
            5. 當前後兩次落於座標的點數比率小於百分之一時,即逼近n邊形面積
            6. 完成

            程式下載


            原碼下載


            參考來源:長榮大學2007校內程式設計競賽初賽 試題 二

            卡片問題

            考慮以下四張卡片,每張卡片有八個數字

            第一張:1 3 5 7 9 11 13 15
            第二張:2 3 6 7 10 11 14 15
            第三張:4 5 6 7 12 13 14 15
            第四張:8 9 10 11 12 13 14 15

            若問數字7存在那幾張卡片,則為第一、第二、第三張,就將第一、第二和第三張卡片的第一個數字加起來,即為數字7

            若卡片為五張時,則卡片會有十六個數字
            問隨意輸入n張卡片時,列出n張卡片的所有數字
            (提示:此題目為二進位之應用)

            困難度:**
            時間複雜度:O(n^2)
            程式語言:C++
            預估時間:1 小時

            解題原理:
            1. 先取得使用者輸入的次數
            2. 先考慮從1到n每個數字到n^2的布林OR的關係去瞭解2進位可能推導原理
            3. 發現正確解為第一個數字要為2的次方,之後往後看不可以重覆,且只能取2^n/2個數
            4. 完成


            程式下載


            原碼下載


            參考來源:長榮大學2007校內程式設計競賽初賽 試題 一