Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用星号画一个圆?Ruby中的函数 我正在上红宝石和C++课程,我必须要解决这个问题。你必须画一个带星号的圆。我在互联网上搜索了很多,但找不到任何完整的解决方案。我想解释一下原因,这样你就不仅仅是在复制代码,你将能够理解它是如何工作的_C++_Ruby_Draw_Asterisk_Geometry - Fatal编程技术网

如何用星号画一个圆?Ruby中的函数 我正在上红宝石和C++课程,我必须要解决这个问题。你必须画一个带星号的圆。我在互联网上搜索了很多,但找不到任何完整的解决方案。我想解释一下原因,这样你就不仅仅是在复制代码,你将能够理解它是如何工作的

如何用星号画一个圆?Ruby中的函数 我正在上红宝石和C++课程,我必须要解决这个问题。你必须画一个带星号的圆。我在互联网上搜索了很多,但找不到任何完整的解决方案。我想解释一下原因,这样你就不仅仅是在复制代码,你将能够理解它是如何工作的,c++,ruby,draw,asterisk,geometry,C++,Ruby,Draw,Asterisk,Geometry,让我们开始工作: 1) 您需要记住,圆是验证公式的一组点,那么哪个公式可以在圆中绘制圆 2) 你会发现很多公式,复杂的代码等等。但若你们停下来想想圆的每一点,你们会发现圆周上的每一点都是由to坐标(x,y)决定的 3) 你要做的是取一个公式,把它放在一个条件下,每次平面上的一个点验证公式打印“*”,这样你就可以画圆了 4) 如何贯穿所有要点?你需要两个循环。第一个在“y”上移动,第二个在“x”上移动,看起来是这样的: r = 5 y = r until y less -

让我们开始工作:
1) 您需要记住,圆是验证公式的一组点,那么哪个公式可以在圆中绘制圆

2) 你会发现很多公式,复杂的代码等等。但若你们停下来想想圆的每一点,你们会发现圆周上的每一点都是由to坐标(x,y)决定的

3) 你要做的是取一个公式,把它放在一个条件下,每次平面上的一个点验证公式打印“*”,这样你就可以画圆了

4) 如何贯穿所有要点?你需要两个循环。第一个在“y”上移动,第二个在“x”上移动,看起来是这样的:

    r = 5
    y = r

    until y less -r do
        x = -r
        until x >= r do
        if (validation condition)
            print '*'
        else
            print ' '
        end
        x += 1
    end
    print "\n"
    y -= 1
    end
    if (x^2 + y^2 >= in_radius)&&(x^2 + y^2 less= out_radius)
        print '*'
    else
        print ' '
    end
    r = 7
    y = r

    r_in = r-0.4
    r_out = r+0.4

    until y less -r do
        x = -r
        until x >= r_out do
            if (x*x + y*y >= r_in*r_in)&&(x*x + y*y less= r_out*r_out)
                print '*'
            else
                print ' '
            end
        x += 0.5
        end
    print "\n"
    y -= 1
    end
5) 好的,现在你有了一个循环,根据半径通过所有的“x”和“y”。 现在,您需要公式来验证要打印的点。
我用的是毕达哥拉斯定理:H^2=C^2+C^2

!![毕达哥拉斯圈][1]

看这张图,我们可以说:r^2=x^2+y^2,现在通过这个公式,你知道哪些点属于圆

6) 问题是,您正在使用一个稍大的字符来绘制一个完美的圆,因此您希望打印所有接近完美圆的点。您必须定义两个与用户输入的半径相近的新半径,然后打印该区域内的所有点。
所以你要有一个in_半径和一个out_半径,你要做的就是从原始半径中减去一些in_半径,再加上一些out_半径

    in_radius = radius - 0.4
    out_radius = radius + 0.4
您将使用此半径作为条件,以验证属于圆的点。validation子句如下所示:

    r = 5
    y = r

    until y less -r do
        x = -r
        until x >= r do
        if (validation condition)
            print '*'
        else
            print ' '
        end
        x += 1
    end
    print "\n"
    y -= 1
    end
    if (x^2 + y^2 >= in_radius)&&(x^2 + y^2 less= out_radius)
        print '*'
    else
        print ' '
    end
    r = 7
    y = r

    r_in = r-0.4
    r_out = r+0.4

    until y less -r do
        x = -r
        until x >= r_out do
            if (x*x + y*y >= r_in*r_in)&&(x*x + y*y less= r_out*r_out)
                print '*'
            else
                print ' '
            end
        x += 0.5
        end
    print "\n"
    y -= 1
    end
将所有代码放在一起,最终代码如下所示:

    r = 5
    y = r

    until y less -r do
        x = -r
        until x >= r do
        if (validation condition)
            print '*'
        else
            print ' '
        end
        x += 1
    end
    print "\n"
    y -= 1
    end
    if (x^2 + y^2 >= in_radius)&&(x^2 + y^2 less= out_radius)
        print '*'
    else
        print ' '
    end
    r = 7
    y = r

    r_in = r-0.4
    r_out = r+0.4

    until y less -r do
        x = -r
        until x >= r_out do
            if (x*x + y*y >= r_in*r_in)&&(x*x + y*y less= r_out*r_out)
                print '*'
            else
                print ' '
            end
        x += 0.5
        end
    print "\n"
    y -= 1
    end
这就是它的外观:

              *********          
          ***           ***      
        **                 **    
      **                     **  
     **                       ** 
    **                         **
    *                           *
    *                           *
    *                           *
    **                         **
     **                       ** 
      **                     **  
        **                 **    
          ***           ***      
              *********          
我希望这是有帮助的

洛佩兹J < /P> < P>这是一个等价的C++代码

#include <iostream>


int main() 
{
    double r = 7.0;
    double r_in  = r - 0.4;
    double r_out = r + 0.4;

    for ( double y = r; y >= -r; --y )
    {
        for ( double x = -r; x < r_out; x += 0.5 )
        {
            double value = x * x + y * y; 
            if ( value >= r_in * r_in && value <= r_out * r_out )
            {
                std::cout << '*';
            }
            else
            {
                std::cout << ' ';
            }
        }
        std::cout << std::endl;
    }

    return 0;
}

你可以问这个问题,并将此作为答案发布。还有,C++在哪里?我很困惑。你到底在问什么?这个问题似乎离题了,因为作者正在使用Stack Overflow作为他的个人博客。对不起,伙计们,我发布它只是为了给这个很棒的网站做贡献。我总是不断地从这里学习,所以我认为这对一些开始做编程的人来说是很有帮助的。我的目的是帮助和分享,就是这样。请不要鼓励他/她提出不好的问题。@jww至于我,我喜欢这个问题。我看到了如何画一个圆。