2017-03-07 146 views
-4

我想繪製一個橢圓,但它不像我繪製的橢圓。 你可以看到我的橢圓。如何用C繪製橢圓?

我應該更改哪些東西? 簡而言之,如何繪製一個好的橢圓?

在代碼中沒有錯誤。

這是我的代碼:

#include <stdio.h> 
void Circle(int radius); 



int main(void){ 
    int radius; 
    Circle(5); 
} 


void Circle(int radius) 
{ 
    int star,space; 
    int i; 
    int j; 
    star=1; 
    space=radius-1; 

    for(i=1;i<=radius;i++) 
    { 
     for(j=1;j<=space;j++){ 
       printf(" "); 
     } 
     for(j=1;j<=star;j++){ 
       printf("*"); 
     } 
     space--; 
     star+=2; 
     printf("\n"); 
    } 
    star-=4; 


    for(i=1;i<radius;i++) 
    { 
     for(j=1;j<=i;j++){ 
       printf(" "); 
     } 
     for(j=1;j<=star;j++){ 
       printf("*"); 
     } 
     star-=2; 
     printf("\n"); 
    } 
} 
+0

R^2 =(X - x_bias)^ 2 +(Y - y_bias)^ 2 ==> Y = y_bias±√(R^2-(X - x_bias)^ 2) – BLUEPIXY

+0

這已經是b作爲一個重複關閉兩次(http://stackoverflow.com/questions/42612311/how-can-i-shift-right-my-equilateral-quadrangle-on-terminal-with-ci-am-beginne)兩次使這個一式三份。我們可以擺脫這個職位(和dups)嗎? – KevinDTimm

回答

0

你的圈子功能應該是這樣的:你的函數的肉和土豆是sqrt((j-(k)/2)*(j-(k)/2) + (i-(k)/2)*(i-(k)/2))<=radius。如果你已經學過高等數學,那麼該公式應該看起來很熟悉。 k是表面,可以調整。

它基本上列出了您的50x50表面積(或任何k是)。 x,y是沿着飛機的不同點。

(X-中心)^ 2 +(Y-中心)^ 2 = <半徑

void Circle(int radius) { 
    int i,j; 
    int k = 50; 
    for (i=0; i<k; i++) { 
     for (j=0; j<k; j++) { 
      if(sqrt((j-(k)/2)*(j-(k)/2) + (i-(k)/2)*(i-(k)/2))<=radius) 
       printf("*"); //meets criteria print * 
      else 
       printf(" "); //blank space 
     } 
     printf("\n"); 
    } 
} 

隨着20半徑:

     *       
       *************     
      *****************     
      *********************    
     *************************    
     ***************************   
     *****************************   
     *******************************   
    *********************************   
    *********************************   
    ***********************************  
    ***********************************  
    *************************************  
    *************************************  
    ***************************************  
    ***************************************  
    ***************************************  
    ***************************************  
    ***************************************  
    ***************************************  
*****************************************  
    ***************************************  
    ***************************************  
    ***************************************  
    ***************************************  
    ***************************************  
    ***************************************  
    *************************************  
    *************************************  
    ***********************************  
    ***********************************  
    *********************************   
    *********************************   
     *******************************   
     *****************************   
     ***************************   
     *************************    
      *********************    
      *****************     
       *************     
        *       

,如果你不希望使用MATH.H可以定義定製的sqrt:

double sqrt(float number) 
{ 
    double precision = 0.001; 
    double s = number; 

    while ((s - number/s) > precision) { 
     s = (s + number/s)/2; 
    } 
    return s; 
} 
+0

@myname這似乎是一個非常武斷的限制。如果這是作業的一部分,或者你需要這樣做的話,那麼你應該在問題中提及這個問題。 –

+0

@AololSoftware你可以在沒有sqrt的情況下解決問題嗎?我不想使用數學庫。 – myname

+0

@myname如果你不想使用數學庫,你可以定義一個sqrt類似的函數嗎? – ApolloSoftware