?? eval_8cpp-source.html
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>a1: eval.cpp Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.9.1 --><div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div><h1>eval.cpp</h1><a href="eval_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 00009 <span class="preprocessor">#include "<a class="code" href="eval_8hpp.html">eval.hpp</a>"</span>00010 <span class="preprocessor">#include "math.h"</span><a name="l00024"></a><a class="code" href="eval_8hpp.html#a0">00024</a> <a class="code" href="classCell.html">Cell</a>* <a class="code" href="eval_8hpp.html#a0">eval</a>(<a class="code" href="classCell.html">Cell</a>* <span class="keyword">const</span> c)00025 {00026 <a class="code" href="classCell.html">Cell</a>* curr = c; 00027 <a class="code" href="classCell.html">Cell</a>* temp; 00028 <span class="keywordtype">int</span> resulti = 0; 00029 <span class="keywordtype">double</span> resultd = 0;00030 string type = <span class="stringliteral">"integer"</span>;00031 string sym;00032 <span class="keywordtype">bool</span> first = <span class="keyword">true</span>;00033 00034 <span class="keywordflow">if</span> (c == NULL) <span class="comment">// input : </span>00035 {00036 <span class="keywordflow">return</span> NULL;00037 }00038 <span class="keywordflow">if</span>( !<a class="code" href="cons_8hpp.html#a9">listp</a>(c)) <span class="comment">// input: 8</span>00039 <span class="keywordflow">return</span> c;00040 00041 <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a5">intp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(c)))00042 {00043 cerr<<<span class="stringliteral">"ERROR!"</span><<endl; <span class="comment">// input :(8)</span>00044 exit(1);00045 }00046 00047 00048 <span class="keywordflow">while</span> (curr!= NULL)00049 {00050 <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a9">listp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(curr)))<span class="comment">// && ) </span>00051 {00052 cout << <span class="stringliteral">" here 1 "</span> << endl;00053 temp = <a class="code" href="eval_8hpp.html#a0">eval</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(curr));00054 cout << <span class="stringliteral">" resulti : "</span><< resulti << <span class="charliteral">'\n'</span> << <span class="stringliteral">"resultd : "</span> <<resultd << endl;00055 00056 } 00057 <span class="comment">// temp = car(curr);</span>00058 00059 <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a7">symbolp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(curr)))00060 { 00061 sym = <a class="code" href="cons_8hpp.html#a12">get_symbol</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(curr));00062 } 00063 00064 <span class="keywordflow">if</span>(sym == <span class="stringliteral">"ceiling"</span>) <span class="comment">// check whether the symbol is ceiling </span>00065 {00066 <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a8">nullp</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr))) <span class="comment">// check the case (ceiling)</span>00067 {00068 cerr << <span class="stringliteral">"ERROR:Should not be Null"</span><<endl;00069 exit(1);00070 }00071 00072 <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a8">nullp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr)))) <span class="comment">// check whether input is empty list or not</span>00073 {00074 cerr << <span class="stringliteral">"ERROR:Should not be Null"</span><<endl;00075 exit(1);00076 }00077 00078 <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a6">doublep</a> (<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr)))) <span class="comment">// check the input is double or not </span>00079 <span class="keywordflow">return</span> <a class="code" href="cons_8hpp.html#a1">make_int</a>(<span class="keywordtype">int</span>(ceil(<a class="code" href="cons_8hpp.html#a11">get_double</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr)))))); 00080 <span class="keywordflow">else</span> 00081 {00082 cerr << <span class="stringliteral">"ERROR:Input is not a double!"</span><<endl;00083 exit(1);00084 } 00085 }00086 00087 <span class="keywordflow">if</span>(sym == <span class="stringliteral">"+"</span>) <span class="comment">//check the symbol is + or not</span>00088 {00089 00090 <span class="keywordflow">if</span>(<a class="code" href="cons_8hpp.html#a8">nullp</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr))) <span class="comment">// check the case (+)</span>00091 <span class="keywordflow">return</span> <a class="code" href="cons_8hpp.html#a1">make_int</a>(0);00092 00093 00094 <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a8">nullp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr)))) <span class="comment">//check th einput is empty list or not</span>00095 {00096 cerr << <span class="stringliteral">"ERROR:Should not be Null"</span><<endl;00097 exit(1);00098 }00099 00100 <span class="keywordflow">if</span>(<a class="code" href="cons_8hpp.html#a5">intp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr)))) <span class="comment">// check the input is integer or not</span>00101 { 00102 <span class="keywordflow">if</span> (type == <span class="stringliteral">"double"</span>)00103 resultd += <a class="code" href="cons_8hpp.html#a10">get_int</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr))); 00104 <span class="keywordflow">else</span> resulti += <a class="code" href="cons_8hpp.html#a10">get_int</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr)));00105 00106 }00107 00108 <span class="keywordflow">if</span>(<a class="code" href="cons_8hpp.html#a6">doublep</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr)))) <span class="comment">// check the input is double or not</span>00109 { 00110 type = <span class="stringliteral">"double"</span>; 00111 resultd += <a class="code" href="cons_8hpp.html#a11">get_double</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr))) + resulti;00112 00113 } 00114 00115 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a7">symbolp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr)))) <span class="comment">// check the input is symbol or not </span>00116 { 00117 cerr<<<span class="stringliteral">"ERROR:Input should be integer or double"</span><<endl; 00118 exit(1);00119 } 00120 } 00121
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -