如何在控制台中用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维度。您可以检查给定的字符是否与公式匹配,因此是的,您的代码非常适合使用公式。感谢您对如何解决我的问题进行了很好的解释,我将稍后进行检查,但我想知道它是否与我的代码兼容。现在我的代码不能很好地工作,第一个条件语句,如果绘制电路和一个对称轴,第二个如果我绘制第二个对称轴,但是在控制台中,我看到右边的线很遥远,我认为是循环的错误添加了第二个对称轴