LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1073|回复: 3

新手求助,怎样通过shell scripts用*绘制圆形

[复制链接]
发表于 2011-10-13 17:46:49 | 显示全部楼层 |阅读模式
这几天准备学习一下shell scripts,无意间弄了个C语言的绘圆程序,看似简单,随即想通过shell scripts来移植一下,顺便练练手,但是屡试屡败,望高手赐教,感激不尽:%
C程序源码:

  1. #include<stdio.h>  
  2. #include<math.h>  
  3. int main()  
  4. {  
  5.         double y;  
  6.         int x,m;  
  7.         for(y=10;y>=-10;y--)  
  8.         {  
  9.                 m=2.5*sqrt(100-y*y); /*计算行y对应的列坐标m,2.5是屏幕纵横比调节系数因为屏幕的
  10. 行距大于列距,不进行调节显示出来的将是椭圆*/  
  11.                 for(x=1;x<30-m;x++)  
  12.                         printf(" "); /*图形左侧空白控制*/  
  13.   
  14.                 printf("*"); /*圆的左侧*/  
  15.   
  16.                 for(;x<30+m;x++)  
  17.                         printf(" "); /*图形的空心部分控制*/  
  18.   
  19.                 printf("*\n"); /*圆的右侧*/  
  20.         }  
  21.         return 0;  
  22. }
复制代码

鄙人移植的shell scripts:

  1. #!/bin/bash
  2. for ((y=10;y>=-10;y=y-1))
  3. do
  4.         m=$(printf "%.f" $(echo "2.5*sqrt(100-y*y)"|bc))
  5.         for ((x=1;x<30-$m;x=x+1))
  6.         do
  7.                 printf " "
  8.         done
  9.         printf "*"
  10.         for ((;x<30+$m;x=x+1))
  11.         do
  12.                 printf " "
  13.         done
  14.         printf "*\n"
  15. done
复制代码

好像m值不变,绘制出的是正方形
发表于 2011-10-13 21:42:12 | 显示全部楼层
m=$(printf "%.f" $(echo "2.5*sqrt(100-$y*$y)"|bc))
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-10-14 12:06:17 | 显示全部楼层
Post by lastart;2153479
m=$(printf "%.f" $(echo "2.5*sqrt(100-$y*$y)"|bc))
  1. (standard_in) 1: parse error
复制代码
回复 支持 反对

使用道具 举报

发表于 2011-10-14 22:38:09 | 显示全部楼层
这是bc的问题。y小于零之后,出现100--1*-1, bc就傻了。
m=$(printf "%.f" $(echo "2.5*sqrt(100-($y*$y))"|bc))
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表