我是C语言新手....下面这个东西求详细的解读。我要是的每一行都要解读的,我一点都不懂的..谢谢了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我是C语言新手....下面这个东西求详细的解读。我要是的每一行都要解读的,我一点都不懂的..谢谢了相关的知识,希望对你有一定的参考价值。

#include <iostream>
using namespace std;
class Calculator

public:
Calculator() STop=0;NTop=0;SignTemp=NULL;NumTemp=0;
void compute(); //计算函数
void getcal() cin>>cal; //获取表达式
void Run();
private:
char cal[200];
char Sign[100],SignTemp;
double Num[100],NumTemp;
int STop,NTop;
;
void Calculator::compute()

switch (Sign[STop-1])

case '+':
Num[NTop-2]+=Num[NTop-1];//运算后将结果存入
STop--;NTop--;break;
case '-':
Num[NTop-2]-=Num[NTop-1];
STop--;NTop--;break;
case '*':
Num[NTop-2]*=Num[NTop-1];
STop--;NTop--;break;
case '/'://判断除数是否为0,0的话结束
if (Num[STop-1]==0)
cout<<"data error!!"<<endl; exit(0);
else

Num[NTop-2]/=Num[NTop-1];
STop--;NTop--;break;
//其中STop--;NTop--;实现的是将数据弹出栈
case ')':
STop=STop-2;break;//发现')'对上个运算符进行判断


void Calculator::Run()//运行函数

const int length(strlen(cal));
char temp;
int p=0;
while (p<=length)//读入数据

temp=cal[p];
if (temp>='0' && temp<='9')
NumTemp=NumTemp*10+double(temp-48);
else

Sign[STop]=SignTemp;
SignTemp=temp;
STop++; //运算符入栈
if (Sign[STop-1]!=')' && temp!='(')

Num[NTop]=NumTemp;
NTop++; NumTemp=0;//数字入栈
switch (temp) //进行有关运算优先级别的考虑

case '+':
case '-':
while(Sign[STop-1]!='(' && STop-1>0)
compute();
break;//"+""-"的时候考虑"("
case '*':
case '/':
while( Sign[STop-1]!='(' && Sign[STop-1]!='+' && Sign[STop-1]!='-'&& STop-1>0 )
compute();
break;
case '(':
break;//继续读取
case ')':
while(Sign[STop-1]!='(') compute();
break;
default:
while(STop-1>0) compute();
cout<<Num[0]<<endl;
exit(0);//结束

p++;


int main()

Calculator Ca;
cout<<"请输入表达式:\n";
Ca.getcal();
Ca.Run();
return 0;

那可以把这个程序转换成C语言么 ...很急的啊,明天要交作业

还是先看C代码吧,C++是在C的基础上来 参考技术A 这是C++语言程序。定义一个类,实现类的方法。
一行行解释估计不大现实了。
参考技术B 这个计算表达式的值的算法。随便找本数据结构的数都有这个算法的介绍。基本原理就是解析字符串,提取里面的数字,运算符,根据运算符的优先级执行运算。用到数据结构是堆栈。

一行一行解释就没什么意义了,程序是活的,你要理解的是程序体现的思想,也就是算法。明白算法了,也就能看懂了。不然就是给你注释好,你也看不明白的。
参考技术C 即使是一行一行的说,也解释不清楚,还是先去看书,看一些能懂的代码吧,然后逐渐去理解这个代码。
等你写多了,你自然也就理解了这些代码了.
对于新手,很多东西不好解释,因为大家不知道你究竟知道什么,不知道什么。如果是小白,那就无从入手了。
简单说一下这段程序:
这段代码先是定义了一个“计算器”类 : class Calculator
然后 完成了对于这个类中的方法(函数) 的实现
在主程序中,要求操作者输入一个表达式,然后程序进行分析、运算,并输出结果。
参考技术D LZ,这是C++的代码诶,我觉得目前不适合你。
还是先看C代码吧,C++是在C的基础上来,

求C语言隐藏光标函数的详细解释

void HideCursor()



CONSOLE_CURSOR_INFO cursor_info = 1, 0;

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);


这段代码需要大神解读每一部分的含义。(这些字符,取地址以及赋值都代表什么意思?)

typedef struct _CONSOLE_CURSOR_INFO
DWORD dwSize; //光标的高度,控制台一行字符的高度为100,光标的高度为1到100
BOOL bVisible; //是否显示光标,TRUE为显示,FALSE为不显示
CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO
CONSOLE_CURSOR_INFO cursor_info = 1, 0;这一句可以看出,bVisible字段为FALSE,表示不显示光标。
GetStdHandle(STD_OUTPUT_HANDLE)这个是获取标准输出(控制台)的句柄
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);这句就是让标准输出(控制台)影藏光标。
参考技术A typedef struct _CONSOLE_CURSOR_INFO 
  DWORD dwSize; //光标的高度,控制台一行字符的高度为100,光标的高度为1到100
  BOOL bVisible; //是否显示光标,TRUE为显示,FALSE为不显示
   CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO

CONSOLE_CURSOR_INFO cursor_info = 1, 0;这一句可以看出,bVisible字段为FALSE,表示不显示光标。
GetStdHandle(STD_OUTPUT_HANDLE)这个是获取标准输出(控制台)的句柄
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);这句就是让标准输出(控制台)影藏光标。

本回答被提问者和网友采纳

以上是关于我是C语言新手....下面这个东西求详细的解读。我要是的每一行都要解读的,我一点都不懂的..谢谢了的主要内容,如果未能解决你的问题,请参考以下文章

详细解读给数据挖掘新手的6个案例

SQLserver 2005 数据库基础问题,我是新手,求答案,能详细就详细点,谢谢!

求C语言隐藏光标函数的详细解释

详细解读用C语言编写的 “扫雷”程序

求大神详细点的帮我讲讲ctf 中pwn re web rsa分别是啥

新手关于C语言中类(Classes)的问题,求高手!