当前位置: 代码迷 >> C语言 >> [原创]计算器程序(可用)
  详细解决方案

[原创]计算器程序(可用)

热度:352   发布时间:2004-12-31 13:09:00.0
楼主,你这个程序非常的好,只有那么一点点小小的问题,好像在VC++里面运行,缺少graphics.h这个头文件。偶没有运行起来,深感......
----------------解决方案--------------------------------------------------------
为什么(5-9/3)=4?
----------------解决方案--------------------------------------------------------
LZ搞点注释吧 看不懂啊
----------------解决方案--------------------------------------------------------
回复:(hao0716)LZ搞点注释吧 看不懂啊
以下是引用hao0716在2006-6-30 10:03:00的发言:
LZ搞点注释吧 看不懂啊

黄鹤不知何处去,
此处独剩黄鹤楼!

都啥时候的帖子咧?
2004年!!!


----------------解决方案--------------------------------------------------------
为什么(5-9/3)=4?
谁可以帮忙修改?
----------------解决方案--------------------------------------------------------

#include <stdlib.h> /* For _MAX_PATH definition */
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <conio.h>


#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10


struct SqStack
{
char *base;
char *top;
int stacksize;
};

void InitStack(SqStack &S)
{
S.base=(char*)malloc(STACK_INIT_SIZE *sizeof(char));
if (!S.base)
exit(1);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
}

void push(SqStack &S,char e)
{
if(S.top-S.base>=S.stacksize)
{
S.base=(char*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(char));
if (!S.base)
exit(1);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
}

char pop(SqStack &S,char &e)
{

if (S.top==S.base)
return false;
e=*--S.top;
return e;
}

void ClearStack(SqStack &S)
{
S.top=S.base;
}

void DestroyStack(SqStack &S)
{
free(S.base);
S.top=S.base;
}

bool StackEmpty(SqStack &S)
{
if (S.top==S.base)
return true;
return false;
}

/*void PrintStack(SqStack &S)
{
char e;
while (!StackEmpty(S))
{
pop(S,e);
printf("%d",e);
}
}*/

void main()
{
char ch,e;
SqStack S,D;
InitStack(S);
InitStack(D);
ch=getchar();
while (ch!=EOF)
{
while(ch!=EOF&&ch!='\n')
{
switch(ch)
{
case'#':pop(S,e);break;
case'@':ClearStack(S);break;
default:push(S,ch);break;
}
ch=getchar();
}
while (!StackEmpty(S))
{
e=pop(S,e);
push (D,e);

}
while (!StackEmpty(D))
{
e=pop(D,e);
printf("%c",e);
}
ClearStack(S);
if(ch!=EOF)
ch=getchar();
}
DestroyStack(S);
}


----------------解决方案--------------------------------------------------------
这是一个行编译器的程序,错误在哪,只有一处错误,在TC2.0上运行有错误,在VC6.0上显示错误数为0,能详细回答吗,我是新手
----------------解决方案--------------------------------------------------------
  相关解决方案