问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

可视化程序设计~急啊

发布网友 发布时间:2022-04-20 18:12

我来回答

1个回答

热心网友 时间:2022-04-20 19:42

/* Author cngdzhang */
/* Date 2002.2 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <conio.h>
#include <ctype.h>

#define ISTR 1
#define INUM 2
#define IOPE 3
#define IERR 0

double getfactor();
double getvalue();

char *pss;

char *ps;
char s1[256];
char s2[256];

double t;
double pi=3.1415926;

void ctolower(char *s)
{
while(*s!= '\0 ')
{
*s=tolower(*s);
s++;
}
}

int getitem(char *ss,char *st)
{
char *p=ss;
while(*p== ' ') p++;
if(*p== '( ' || *p== ') ' || *p== '+ ' || *p== '- ' || *p== '* ' || *p== '/ ')
{
*st++=*p;
*st= '\0 ';
p++;
ps=p;
return(IOPE);
}
else if(isdigit(*p))
{
while(isdigit(*p)) *st++=*p++;
*st= '\0 ';
ps=p;
return(INUM);
}
else if(isalnum(*p))
{
while(isalnum(*p)) *st++=*p++;
*st= '\0 ';
ps=p;
return(ISTR);
}
return(IERR);
}

double countit(double num1,char op,double num2)
{
switch(op)
{
case '+ ':
return(num1+num2);
case '- ':
return(num1-num2);
case '* ':
return(num1*num2);
case '/ ':
return(num1/num2);
default:
printf( "error!!! ");
break;
}
return(IERR);
}

double getvalue()
{
int f;
double num1,num2;
char op1,op2;
num1=getfactor();
bb:
f=getitem(ps,s2);
if(f==IERR) return(num1);
if(f==IOPE && *s2== ') ') return(num1);
if(f==IOPE) op1=*s2;
num2=getfactor();
num1=countit(num1,op1,num2);
goto bb;

}

double getfactor()
{
int f;
double num1,num2;
char op1,op2;
f=getitem(ps,s2);
if(f==IOPE && *s2== '( ') return(getvalue());
if(f==ISTR && *s2== 't ' && *(s2+1)== '\0 ') num1=t;
if(f==ISTR && *s2== 'p ' && *(s2+1)== 'i ') num1=pi;
if(f==INUM) num1=atof(s2);
if(f==IOPE && *s2== '- ')
{
f=getitem(ps,s2);
if(f==ISTR && *s2== 't ') num1=-t;
else if(f==ISTR && *s2== 'p ' && *(s2+1)== 'i ') num1=-pi;
else if(f==IOPE && *s2== '( ') return(-getvalue());
if(f==INUM) num1=-atof(s2);
}
if(f==ISTR && *s2== 'c ' && *(s2+1)== 'o ') num1=cos(getfactor());
if(f==ISTR && *s2== 's ' && *(s2+1)== 'i ') num1=sin(getfactor());
if(f==ISTR && *s2== 't ' && *(s2+1)== 'a ') num1=tan(getfactor());
if(f==ISTR && *s2== 's ' && *(s2+1)== 'q ') num1=sqrt(getfactor());
if(f==ISTR && *s2== 'l ' && *(s2+1)== 'n ') num1=log(getfactor());
if(f==ISTR && *s2== 'e ' && *(s2+1)== 'x ') num1=exp(getfactor());
aa:
f=getitem(ps,s2);
if(f==IOPE && (*s2== '+ ' || *s2== '- ' || *s2== ') '))
{
ps--;
return(num1);
}
if(f==IERR) return(num1);
op1=*s2;
f=getitem(ps,s2);
if(f==INUM) num2=atof(s2);
else if(f==IOPE && *s2== '( ') num2=getvalue();
if(f==ISTR && *s2== 't ' && *(s2+1)== '\0 ') num2=t;
if(f==ISTR && *s2== 'p ' && *(s2+1)== 'i ') num2=pi;
if(f==IOPE && *s2== '- ')
{
f=getitem(ps,s2);
if(f==ISTR && *s2== 't ') num2=-t;
else if(f==ISTR && *s2== 'p ' && *(s2+1)== 'i ') num2=-pi;
else if(f==IOPE && *s2== '( ') return(-getvalue());
if(f==INUM) num2=-atof(s2);
}
if(f==ISTR && *s2== 'c ' && *(s2+1)== 'o ') num2=cos(getfactor());
if(f==ISTR && *s2== 's ' && *(s2+1)== 'i ') num2=sin(getfactor());
if(f==ISTR && *s2== 't ' && *(s2+1)== 'a ') num2=tan(getfactor());
if(f==ISTR && *s2== 's ' && *(s2+1)== 'q ') num2=sqrt(getfactor());
if(f==ISTR && *s2== 'l ' && *(s2+1)== 'n ') num2=log(getfactor());
if(f==ISTR && *s2== 'e ' && *(s2+1)== 'x ') num2=exp(getfactor());
num1=countit(num1,op1,num2);
goto aa;
}

void main(){
clrscr();
printf( "Please enter the string: ");
gets(s1);
ps=s1;
printf( "%s = %lf ",s1,getvalue());

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电视屏幕不亮但有声音是怎么回事 电视只出声音不出画面怎么调 每天做踩单车的运动能瘦腿吗? 踩单车能瘦腿吗 知道踩自行车能瘦腿吗 注意姿势才是关键 踩自行车可以瘦腿吗 踩单车的好处是什么?怎样进行瘦腿? Adobe AIR是什么?能做什么? adobeair是什么软件,可不可以卸载?? 15--18万之间的车 初二期末考地理与物理谁知道怎么复习?笔记太乱了,有没有初二党已考好的? 模拟人生4这个配置能玩吗? 我电脑配置这样可以流畅玩高画质的模拟人生4吗? 我是一名初二即将要会考【地理生物】的学生,求大家告知怎么复习才有效率 笔记本这个配置可以完美运行模拟人生4嘛? 请问这个配置可以玩模拟人生4吗? 我现在初二,本周六就要地理会考了,怎样才能最有用的复习地理? 模拟人生4笔记本电脑模式是什么 一个每天最多可以加多少好友? 一个最多能加多少个好友? 求足球小说有的兄弟发到我邮箱 axjianyu@163.com 求足球小说,希望主角是在皇马发展的。邮箱:adolfyoung@163.com 求实况足球8转会补丁怀恋版!898359867@163.com 网易足球手游怎么挑射 求实况足球2010把自创人物的名字改成中文的修改器。邮箱,jealad@163.com,非常谢谢,还有怎么使用 求实况足球2010最新转会补丁。 邮箱:jie49@163.com Thanks! zq163足球走地请问下大家最好的是哪个? 163的梦幻足球经理登不上去,怎么办? 判断!学校足球队员身高是163cm?最矮队员身高是165cm(。 )最高队员身高是175筹码(。_百度问一问 《可视化程序设计》 固态硬盘装好了sata接口能换吗 多吃苹果有什么功效?育儿问答 吃苹果的有什么好处? 能把ipad里的清风dj歌曲导入u盘吗? 为什么设置了U盘为第一启动项还是从硬盘启动?无法进入PE系统重装? 流星蝴蝶剑清风版双击注册表添加不到C盘进去,却把注册表打开了。 最新版的JR,怎么用U盘写入UPDFLASH.BIN? 新买的U盘插入USB接口提示“硬件安装期间出现了一个问题,您的新硬件可能无法正常运行” 风火山林可以不用外设例如u盘,关盘,重装系统吗? 流星蝴蝶剑1.03版 《为奴十二年》,作为一个黑人人权电影,好看在哪里? 珂雅萱七彩冻干粉怎么样? 遵义鸡蛋糕的介绍 遵义鸡蛋糕的配方? 短焦投影仪多少钱 飞利浦hdp1690TV使用说明书 廊坊哪个小学好 想在廊坊买房子,考虑孩子上学,孩子一周半,在哪所小学比较好?小学的划片是怎样的?最好兼顾中学 六十毫升酒是几两酒 廊坊华油荣德小学怎么样?成绩和校风如何?