如何在控制台中用c++绘制具有对角线和对称轴的矩形?
我想在控制台中用*画一个矩形。现在我有了绘制矩形周长及其对称轴的代码,但我不知道如何绘制对角线。你能帮助我吗?这是我的密码如何在控制台中用c++绘制具有对角线和对称轴的矩形?,c++,console,draw,C++,Console,Draw,我想在控制台中用*画一个矩形。现在我有了绘制矩形周长及其对称轴的代码,但我不知道如何绘制对角线。你能帮助我吗?这是我的密码 #include <iostream> #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]) { int s,d; printf ("the length of the rectangle
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[]) {
int s,d;
printf ("the length of the rectangle \n");
scanf ("%d",&s);
printf ("width of the rectangle \n ");
scanf ("%d",&d);
int l;
int p;
int przekatna;
for (p=1; p<=s; p++)
{
printf ("\n");
for (l=1;l<=d; l++)
{
if(p==1 || l==1 || l==d || s==p || p==((d+1)/2) ) printf("*"); else printf(" ");
if ( l==(d)/2 && p!=((d+1)/2) && p!=1 && p!=s)
printf("*"); else printf("");
}
}
return 0;
}
编辑,它的好代码,它的工作我的老师向我解释了如何制作对角线,这就是它
#include <stdlib.h>
#include <math.h>
int main() {
int l;
int p;
int s;
int d;
printf ("the length of the rectangle \n");
scanf ("%d",&s);
printf ("width of the rectangle \n ");
scanf ("%d",&d);
for (p=1; p<=s; p++)
{
printf ("\n");
for (l=1;l<=d; l++)
{
if(p==1 || l==1 || l==d || s==p
|| p==s/2 || l==l/2 ||
l==p*round(d/s) || l==(s+1-p)*round(d/s) )
printf("*"); else printf(" ");
}
}
return 0;
}
这其实不是一个小问题 你看,当我们把对角线想象成与圆周线宽度相同的直线时,它们与整数坐标并不完全对应。因此,如果使用“*”字符,要么太多(每行数个),要么太少,行中有换行符 您可能希望使用此方法解决此问题 或者-如果您想简单化,并且每行放置一个“*”,请使用对角线公式,并进行舍入,以选择最佳值,而不考虑其他行: 主对角线y=x-开始x*浮动矩形y尺寸/矩形x尺寸 假设x为垂直尺寸,y为水平尺寸;你用了其他符号,但我觉得有点混乱 对于相反的小对角线,使用 小对角线=矩形对角线-大对角线 如果您愿意使用其他字符,您可以使用对角线部分进行咨询。它演示了如何改变字符的使用以有效地获得子字符分辨率。引用他们的例子:
/ .' _,-' __
/ .' _,-' __..--''
/ .' _,-' __..''
/ .' _,-' __..--''
/ .' _,-' __..--''
/ .' _,-' __..--'' ____....----"""
/ .' _,-' __..--'' ____....----""""
/ .' ,-' __..--'' ____....----""""
这其实不是一个小问题 你看,当我们把对角线想象成与圆周线宽度相同的直线时,它们与整数坐标并不完全对应。因此,如果使用“*”字符,要么太多(每行数个),要么太少,行中有换行符 您可能希望使用此方法解决此问题 或者-如果您想简单化,并且每行放置一个“*”,请使用对角线公式,并进行舍入,以选择最佳值,而不考虑其他行: 主对角线y=x-开始x*浮动矩形y尺寸/矩形x尺寸 假设x为垂直尺寸,y为水平尺寸;你用了其他符号,但我觉得有点混乱 对于相反的小对角线,使用 小对角线=矩形对角线-大对角线 如果您愿意使用其他字符,您可以使用对角线部分进行咨询。它演示了如何改变字符的使用以有效地获得子字符分辨率。引用他们的例子:
/ .' _,-' __
/ .' _,-' __..--''
/ .' _,-' __..''
/ .' _,-' __..--''
/ .' _,-' __..--''
/ .' _,-' __..--'' ____....----"""
/ .' _,-' __..--'' ____....----""""
/ .' ,-' __..--'' ____....----""""
你有什么想法吗?有没有失败的尝试?如果它是一个正方形而不是一个长方形,你能做到吗?你可能在寻找。@JesperJuhl我强烈怀疑这是一门c/c++入门课程。“当然是够不着了。”长颈鹿船长——也许吧。但如果是这样的话,那么OP应该在问题中说得同样多。如果p==1 | | l==1 | | l==d | | s==p | | p==d+1/2 printf*;else-printf;如果l==d/2&&p=d+1/2&&p=1&p=s printf*;else-printf;每当你写或复制粘贴一块难以理解的像这样的黏液块时,你需要问问自己我做错了吗?是的,然后你需要开始使用一些中间变量和有意义的名称重新编写代码。别担心,编译器会优化它们——请使用换行符和空格。你未来的自己会感谢我/你。别写那种不可读的废话。你有什么想法吗?有没有失败的尝试?如果它是一个正方形而不是一个长方形,你能做到吗?你可能在寻找。@JesperJuhl我强烈怀疑这是一门c/c++入门课程。“当然是够不着了。”长颈鹿船长——也许吧。但如果是这样的话,那么OP应该在问题中说得同样多。如果p==1 | | l==1 | | l==d | | s==p | | p==d+1/2 printf*;else-printf;如果l==d/2&&p=d+1/2&&p=1&p=s printf*;else-printf;每当你写或复制粘贴一块难以理解的像这样的黏液块时,你需要问问自己我做错了吗?是的,然后你需要开始使用一些中间变量和有意义的名称重新编写代码。别担心,编译器会优化它们——请使用换行符和空格。你未来的自己会感谢我/你。不要写那种不可读的废话。@pakson:你的代码在我的答案中有一个外循环用于行x维度,在我的答案中有一个内循环用于列y维度。您可以检查给定的字符是否与公式匹配,因此是的,您的代码非常适合使用公式。感谢您对如何解决我的问题进行了很好的解释,我将稍后进行检查,但我想知道它是否与我的代码兼容。现在我的代码不能很好地工作,第一个条件语句,如果绘制电路和一个对称轴,第二个如果我绘制第二个对称轴,但是在控制台中,我看到右边的线很远,我认为是循环的错误添加了
第二轴symetri@pakson:您的代码在我的答案中有一个外部循环用于行x维度,在我的答案中有一个内部循环用于列y维度。您可以检查给定的字符是否与公式匹配,因此是的,您的代码非常适合使用公式。感谢您对如何解决我的问题进行了很好的解释,我将稍后进行检查,但我想知道它是否与我的代码兼容。现在我的代码不能很好地工作,第一个条件语句,如果绘制电路和一个对称轴,第二个如果我绘制第二个对称轴,但是在控制台中,我看到右边的线很遥远,我认为是循环的错误添加了第二个对称轴