01/10/2018, 09:46

Tính giá trị biểu thức trong c

chương trình này sai chỗ nào vậy mn?


    #include<stdio.h>
    #include<conio.h>
    int main(){
    	int n,i,j,c,t=1;
    	float S;
    	printf("nhap n=");
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	{
    		for(j=0;j<=i;j++);
    		{
    			t=t*(j+1);
    		}
    		if(i%2==0)
    			c=1;
    		else
    			c=-1;
    		S+=(float)(c/t);
    		t=1;
    	}
    	printf("
gia tri cua bieu thuc la:%.2f",S);
    	return 0;
    }
Đề bài
<img src="https://daynhauhoc.com//daynhauhoc.s3-ap-southeast-1.amazonaws.com/original/3X/f/6/f6d026ac0c2a32684a4f3856b36b85be93e56275.PNG" width="410" height="99">
Nguyen Kien viết 12:02 ngày 01/10/2018

Bạn nên học cách debug để biết sai chỗ nào, chứ lần sau gặp lại thì đi hỏi mất công lắm !
nếu dùng IDE code::blocks thì có thể xem cách debug của anh đạt qua links sau: https://www.youtube.com/watch?v=62iLjSY4QGE&list=PLyiioioEJSxEXbzan8Ot3BWl1D3rp9SVK&index=5
https://www.youtube.com/watch?v=KTasGgHK3lk&index=6&list=PLyiioioEJSxEXbzan8Ot3BWl1D3rp9SVK

ngược lại nếu dùng IDE visual studio: https://www.youtube.com/watch?v=Yk0PiqvaMjE&t=149s

tran luong viết 12:01 ngày 01/10/2018

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

Tao Không Ngu. viết 11:53 ngày 01/10/2018

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.

Tuổi Già Ta Vẫn Xông Pha viết 12:02 ngày 01/10/2018

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

rogp10 viết 11:56 ngày 01/10/2018

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.

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.

Trong Lam viết 11:47 ngày 01/10/2018

Hi gia cat luong
Bạn thử dùng code này xem

#include<stdio.h>
#include<conio.h>
int main()
{
	int n,i,j,c,t=1;
	float S;
        S=1;
	printf("nhap n=");
	scanf("%d",&n);
	for(i=2;i&lt;=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;
}
Trong Lam viết 11:46 ngày 01/10/2018

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

#include <iostream>
using namespace std;
int main()
{
    int i,n,t;
    float c,s;
    t=1;
    s=1;
    cout<<"nhap n:"<<endl;
    cin>>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:" <<s<< endl;
    return 0;
}
Bài liên quan
0