//提供控制臺簡單菜單和?方形和矩形輸出。
//矩形的對角線輸出不穩定(幾何方程離散化需要更復雜的算法,所以比較深)。長度和寬度較大時可以使用。
//邊長約32的窗口無法完整顯示。
#包含?& ltiostream & gt
#包含?& ltstdlib.h & gt
#包含?& ltstdio.h & gt
#包含?& ltconio.h & gt
使用?命名空間?std
//?func?聲明-
作廢?set _ prefix _ str(char * & amp;?str,?int?萊恩。夏爾?ch);
作廢?println_str(const?char*?str);
作廢?print_pix(const?char*?str);
int?print_rectangle(float?rectX,float?rectY);
//?gloabl?-
const?char*?PIX0?=?"□";
const?char*?PIX1?=?"■";
int?萊恩。=?8;
char*?前綴?=?NULL
//?主要?菜單?-
int?主()
{
浮動?rectX
浮動?rectY
int?選項?=?-1;
設置前綴字符串(?前綴,?萊恩。'?'?);
而(1)?{
系統(“cls”);
println _ str(" ");
println _ str(" ");
println_str("打印?矩形”);
println _ str(" ");
println _ str(" ");
println_str("[1]?打印?方形”);
println_str("[2]"?打印?矩形(不穩定)”);
println_str("[3]?設置”);
println _ str(" ");
println_str("[0]?退出”);
println _ str(" ");
選項?=?getch();
println _ str(" ");
如果?(?選項?& lt?'0'?還是?選項?& gt?'3'?)?{
繼續;
}
如果?(' 0 ' = =選項)?{
打破;
}
如果?(' 3 ' = =選項)?{
Print_pix("設置左縮進:");
CIN & gt;& gtLEN
設置前綴字符串(?前綴,?萊恩。'?'?);
繼續;
}
如果?(' 1 ' = =選項)?{
Print_pix("正方形邊長:");
CIN & gt;& gtrectY?rectX = rectY
println _ str(" ");
}
如果?(' 2 ' = =選項)?{
Print_pix("矩形長度:");
CIN & gt;& gtrectX
println _ str(" ");
Print_pix("矩形的高度:");
CIN & gt;& gtrectY
println _ str(" ");
}
如果?(rectX & lt0?還是?rectX & gt64)?{
Println _ str("錯誤的x參數範圍");
系統(“暫停”);
繼續;
}
如果?(rectY & lt0?還是?rectY & gt64)?{
Println_str("Y參數範圍錯誤");
系統(“暫停”);
繼續;
}
系統(“cls”);
println _ str(" ");
print_rectangle(rectX,rectY);
println _ str(" ");
系統(“暫停”);
繼續;
}
回歸?0;
}
//?工具?-
作廢?println_str(const?char*?str)?{
cout & lt& lt?str & lt& lt?endl & lt& lt?前綴;?//?還是?使用?printf?去哪?打印
}
作廢?print_str(const?char*?str)?{
cout & lt& lt?str & lt& lt?前綴;?//?還是?使用?printf?去哪?打印
}
作廢?print_pix(const?char*?str)?{
cout & lt& lt?str?//?還是?使用?printf?去哪?打印
}
作廢?set _ prefix _ str(char * & amp;?str,?int?萊恩。夏爾?ch)?{
如果?(?str?)?{
免費(str);
}
//使用?新的?還是?馬洛克
str?=?(char*)?malloc(?sizeof(char)*(len+1)?);
//新建?char[](len+1)
//delete[](str)
為了什麽?(int?我?=?0;?我?& lt?len?++i)?{
str[i]?=?ch;
}
str[len]?=?'\0';
}
int?print_rectangle(float?rectX,?浮動?rectY)?{
int?maxX?=?(int)(rectX);
int?麥克斯。=?(int)(rectY);
//對角方程?y?=?kx?+?b
//平方法則?k?=?+/-1
浮動?k1?=?maxY/(float)(maxX);
浮動?k2?=?-maxY/(float)(maxX);
int?數數?=?0;
為了什麽?(int?y?=?0;?y?& lt=?maxY?++y)?{
為了什麽?(int?x?=?0;?x?& lt=?maxX?++x)?{
//橫向方程式
如果?(0==y?還是?maxY==y)?{
print _ pix(pix 1);
++計數;
繼續;
}
//縱向方程式
如果?(0==x?還是?maxX==x)?{
print _ pix(pix 1);
++計數;
繼續;
}
//對角方程?y?=?kx?+?b
如果?((int)(k1*x)==y?還是?(int)(k2*x)+maxY==y)?{
print _ pix(pix 1);
++計數;
繼續;
}
print _ pix(pix 0);
++計數;
繼續;
}
println _ str(" ");
}
回歸?數數;
}