Viết chương trình tính giá trị biểu thức trong C
VietJack Bằng cách đăng ký, bạn đồng ý với Điều khoản sử dụng và Chính sách Bảo mật của chúng tôi.
//lập trình c tính giá trị của 1 biểu thức bất kỳ nhập từ bàn phím gồm các phép tính cộng, trừ, nhân, chia (+-/*). biểu thức nhập ở dạng chuỗi. giống máy tính bỏ túi casio
#include
#include
#include
#include
#include using namespace std; float tinhgiatri(char *s); void sohang(char *s,float *a,int &n); void dau(char *s,char *b); int kiemtra(char *s); void main() { char s[1000],c; cout<<"TRẦN KHÁNH TOÀN\n-------------------------------------------------------------------"; loop:; do { cout << "\n->nhap bieu thuc:\n\t"; fflush(stdin); gets(s);
if(!kiemtra(s)) cout<<"\nnhap bieu thuc khong chua }while(!kiemtra(s));
cout<<"\t= "< if(c=getch()==32) goto loop; } float tinhgiatri(char *s) { float kq,a[1000]; int i,j,n; char b[1000]; sohang(s,a,n); dau(s,b);
for(i=0;i { if(b[i]=='*') { (float)a[i]*=(float)a[i+1];
for(j=i+1;j n--;
for(j=i;j b[strlen(b)-1]='\0'; i--; } if(b[i]=='/') { (float)a[i]/=(float)a[i+1];
for(j=i+1;j n--;
for(j=i;j b[strlen(b)-1]='\0'; i--; } } (float)kq=(float)a[0];
for(i=0;i { if(b[i]=='+') kq+=(float)a[i+1]; else kq-=(float)a[i+1]; } return kq; } void sohang(char *s,float *a,int &n) { char z[1000]; int i,k,j,x; n=0;
for(i=0;i { k=0; while(s[i]>='0' && s[i]<='9') z[k++]=s[i++]; z[k]='\0'; x=atoi(z); a[n++]=(float)x; } } void dau(char *s,char *b) { int i,k=0;
for(i=0;i if(s[i]=='+' || s[i]=='-' || s[i]=='*' || s[i]=='/') b[k++]=s[i]; b[k]='\0'; } int kiemtra(char *s) { if(strlen(s)==0) return 0;
for(int i=0;i if(s[i]==' ' || (s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i] <='Z') || ((s[i]=='+' || s[i]=='-' || s[i]=='*' || s[i]=='/')&& (s[i+1]=='+' || s[i+1]=='-' || s[i+1]=='*' || s[i+1]=='/'))) return 0; return 1; }
chương trình này sai chỗ nào vậy mn? #include
nếu sai logic thì làm sao debug hả bạn ?
HI luong hulk. 1 Like
Sai là đúng rồi
Bạn cho chạy luôn tới i vậy thì bạn đã nhân với i+1 => sai. Vả lại c/t là số nguyên nên kết quả sai.
Lỗi dùng sai với hiểu sai mới khó debug chứ cái đó thì vẫn được.
Hi gia cat luong
Còn đây là bằng c++ #include |