作者F23ko (纯洁)
看板C_Sharp
标题Re: [问题] 画一个漏斗图案
时间Fri Jul 23 23:25:16 2010
真不知道为什麽要用很华丽的方式去解问题.....
解问题不是越简单越好吗?
题目是:
画出这个图
*****
***
*
***
*****
长宽是死的,不会变,也没要求要能改变
那直接画真的最简单.....
用这麽复杂的方式写干什麽呢?
============使用委派兼物件导向的版本(恶搞)===========
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