看板 C_Sharp 關於我們 聯絡資訊
真不知道為什麼要用很華麗的方式去解問題..... 解問題不是越簡單越好嗎? 題目是: 畫出這個圖 ***** *** * *** ***** 長寬是死的,不會變,也沒要求要能改變 那直接畫真的最簡單..... 用這麼複雜的方式寫幹什麼呢? ============使用委派兼物件導向的版本(惡搞)=========== using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Show漏斗 { Action 畫漏斗; string 漏斗 = "*****n *** n * n *** n*****n"; public Show漏斗() { foreach(char A in 漏斗) { switch (A) { case '*': 畫漏斗 += ShowStart; break; case ' ': 畫漏斗 += ShowSpace; break; case 'n': 畫漏斗 += NextLine; break; } } } public void ShowStart() { Console.Write("*"); } public void ShowSpace() { Console.Write(" "); } public void NextLine() { Console.WriteLine(); } public void Run() { 畫漏斗(); } } class Program { static void Main(string[] args) { Show漏斗 漏斗 = new Show漏斗(); 漏斗.Run(); } } } =======================(可自由輸入寬高之版本)========================= using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int 寬,高; ReStart1: Console.WriteLine("請輸入邊長:"); try { 寬 = Convert.ToInt32(Console.ReadLine()); if (寬 < 1) throw new Exception(); } catch { Console.WriteLine("輸入錯誤!"); goto ReStart1; } ReStart2: Console.WriteLine("請輸入高:"); try { 高 = Convert.ToInt32(Console.ReadLine()); if (高 < 1) throw new Exception(); } catch { Console.WriteLine("輸入錯誤!"); goto ReStart2; } float 級距 = (float)寬 / (float)高; float 半寬 = (float)寬 / 2.0F; float 半高 = (float)高 / 2.0F; //高迴圈 //Console.WriteLine("級距:{0},半寬:{1},半高:{2}", 級距, 半寬, 半高); //debug用 for (int 繪高 = 1; 繪高 <= 高; 繪高++) { float 下邊界,上邊界; 下邊界 = 級距 * (float)(((繪高 <= 半高) ? (繪高-1) : (高-繪高))); 上邊界 = 寬 - 下邊界+1; //寬迴圈 for (int 繪寬 = 1; 繪寬 <= 寬; 繪寬++) { Console.Write( (繪寬 > 下邊界 && 繪寬 < 上邊界) ? "*" : " "); } //Console.Write(" 上邊界:{0},下邊界:{1}", 上邊界, 下邊界); //debug用 Console.WriteLine(); } Console.WriteLine(); Console.WriteLine("再畫一次?Y / (N or Anykey)"); if (Console.ReadKey(true).Key == ConsoleKey.Y) goto ReStart1; } } } -- 我... 我一點都不糟糕啦!>///< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.27.109.99