Viết chương trình tính giá trị biểu thức trong C

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.

Viết chương trình tính giá trị biểu thức trong C


//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 ,ky tu,phep tinh lien ke...\n\tNHAP LAI\n\n";

}while(!kiemtra(s));

cout<<"\t= "<"\n\n\t---------------------\n\t| tiep tuc: |\n\t| ket thuc: bat ky  |\n\t---------------------\n";

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 #include int main(){ int n,i,j,c,t=1; float S; printf("nhap n="); scanf("%d",&n); for(i=0;i

nếu sai logic thì làm sao debug hả bạn ?

HI luong hulk.
Sai logic thì mới phải debug chứ @_@!. Cứ đặt bug tạo chỗ nào nghi ngờ rồi chạy thôi.

1 Like

Sai là đúng rồi
n!=123*…n chứ đâu bằng 12(3*…*n(+1)
Xem lại chổ tính i! là biết

Bạn cho chạy luôn tới i vậy thì bạn đã nhân với i+1 => sai.
Đúng bài là đặt S = 1 cho nhẹ nhàng rồi nhân lên từ từ, không cần vòng lặp lồng.

Vả lại c/t là số nguyên nên kết quả sai.

Viết chương trình tính giá trị biểu thức trong C
Gia_Cat_Luong:

nếu sai logic thì làm sao debug hả bạn ?

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
Bạn thử dùng code này xem

#include #include int main() { int n,i,j,c,t=1; float S; S=1; printf("nhap n="); scanf("%d",&n); for(i=2;i<=n;i++) { if(i%2==0) c=-1; else c=1; t= t * i; S=S+(float)(c/t); } printf("\ngia tri cua bieu thuc la:%.2f",S); return 0; }

Còn đây là bằng c++

#include using namespace std; int main() { int i,n,t; float c,s; t=1; s=1; cout<<"nhap n:"<>n; for(i=2; i<=n; i++) { if(i%2==0) { c=-1.0; } else { c=1.0; } t=t*i; s=s+(float)(c/t); } cout << "tong la:" <

Home Categories FAQ/Guidelines Terms of Service Privacy Policy