Four Arithmetic Operation
2015-09-15 02:22
337 查看
Tp1: calculation of a formula with only a kind of operator
#! /bin/sh n=$# if [ $n -eq 0 ] then echo "Opération manquante" exit elif [ $n -eq 1 ] then echo "Opréation manquante" else res=$2 case $1 in "add") echo -n $2 shift 2 while [ $# -ne 0 ] do echo -n "+$1" res=`expr $res + $1` shift done echo "=${res}";; "supp") echo -n $2 shift 2 while [ $# -ne 0 ] do echo -n "-$1" res=`expr $res - $1` shift done echo "=${res}";; "mult") echo -n $2 shift 2 while [ $# -ne 0 ] do echo -n "x$1" res=`expr $res \* $1` shift done echo "=${res}";; "div") echo -n $2 shift 2 while [ $# -ne 0 ] do echo -n "/$1" if [ $1 -eq 0 ] then echo -e "\nDivision par 0 interdite" exit else res=`expr $res / $1` shift fi done echo "=${res}";; *) echo "Opération non traitée";; esac fi
Tp2: calculation of a formula without considering the priority of each operator
#! /bin/sh if [ $# -eq 0 ] then echo " Opérande manquante" exit else res=$1 echo -n "$1" shift while [ $# -ne 0 ] do case $1 in "+") echo -n " $1 $2" res=`expr $res + $2` shift 2 ;; "-") echo -n " $1 $2" res=`expr $res - $2` shift 2 ;; "x") echo -n " $1 $2" res=`expr $res \* $2` shift 2 ;; "/") echo -n " $1 $2" if [ $2 -eq 0 ] then echo " ->Divivion par 0 interdite" exit else res=`expr $res / $2` shift 2 fi ;; *) echo " $1 -> Opération non traitée" exit esac done echo " = $res" fi
Tp3: calculation of a formula without brackets
#! /bin/sh index=0 while [ $# -gt 0 ] do if [ $1 != x -a $1 != / ] then low_priority[$index]=$1 index=`expr $index + 1` shift 1 else case $1 in "x") pre_index=`expr $index - 1` res=`expr ${low_priority[$pre_index]} \* $2` low_priority[$pre_index]=$res shift 2 ;; "/") pre_index=`expr $index - 1` res=`expr ${low_priority[$pre_index]} / $2` low_priority[$pre_index]=$res shift 2 ;; esac fi done n=1 length=${#low_priority[@]} end=`expr $length - 2` res=${low_priority[0]} while [ $n -le $end ] do case ${low_priority[$n]} in "+") nex_n=`expr $n + 1` res=`expr $res + ${low_priority[$nex_n]}` n=`expr $n + 2`;; "-") nex_n=`expr $n + 1` res=`expr $res - ${low_priority[$nex_n]}` n=`expr $n + 2`;; *) exit;; esac done echo $res
相关文章推荐
- linux分区和文件系统管理
- tomcat的8080,8009,8443,8005都是什么端口
- 离开win7的日子-linux下openoffice乱码问题解决
- Android系统架构、JVM和DalvikVM的区别
- Uva 11992 Fast Matrix Operations (二维线段树)
- linux下rpm,yum学习
- TextureView+SurfaceTexture+OpenGL ES来播放视频(二)
- shell简介及变量、脚本相关概念
- linux 安装jdk及tomcat指定jdk版本
- 美版Linksys WRT1900AC v1刷OpenWrt经验
- linux 第三天11讲
- 浅析是不是所有网站建设都是为了挣钱
- cobbler使用入门(未完整,待修改)
- nginx1.8源码安装+waf+php5.5
- nginx配置优化
- centos6.5上mysql5.6源码安装
- Linux中变量$#,$@,$0,$1,$2,$*,$$,$?的含义
- CentOS下关闭和开启图形界面
- Nodejs架构之json空处理
- Hadoop2.2.0-HA高可用集群环境搭建