Lập trình C, giúp em với.

Trần Nhật Anh
(Trần Nhật Anh)

Điều hành viên
Mọi người ơi, em có một đề bài: Tính tích phân từ a1 đến a2 của x^2+1 bằng cách chia thành n hình chữ nhật nhỏ.

Sau đây là bài của em:
Mã:
// Bai tap so 4
// Nhap tu ban phim 2 so thuc a1, a2 va so nguyen n
// Tinh tich phan tu a1 den a2 cua (x^2+1)dx
//bang cach tinh dien tich cua n chu nhat nho

#include<math.h>
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>

float s,a1,a2,a;
int i,n;

int main(void)
{
 printf("Tinh tich phan tu a1 den a2 cua (x^2+1)dx");
 printf("\na1="); scanf("%f",&a1);
 printf("a2=");    scanf("%f",&a2);
 printf("n=");     scanf("%i",&n);

 if(n<1)
  printf("ban can nhap n>=1");
 else
 {
 s=0;
 a=a1;
 for(i=1;i<=n;i++)
  {
   a=a+(a2-a1)/n;
   s=s+((a2-a1)/n)*(a*a+1);
  }

 printf("Tich phan la:%f",s);
 }
getch();
return 1;
}
Bài này có chạy và ra được kết quả.

Sau đây là bài của bạn em:
Mã:
#include<math.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
float x,y,a1,a2;
int i,n;
int main(void)
{
 printf("\n Nhap a1="); scanf("%f",&a1);
 printf("\n Nhap a2="); scanf("%f",&a2);
 printf("\n Nhap n="); scanf("%f",&n);

 x=a1;
 for(i=1;i<=n;i++)
 {
  x=x+(a2-a1)/n;
  y=y+((a2-a1)/n)*(x*x+1);
 }
 printf("\n Tich phan y=%f",y);
 getch();
 return 1;
 }
Bài này cũng chạy nhưng kết quả bao giờ cũng bằng 0. Mọi người xem giúp em xem lí do tại sao? em chẳng thấy 2 bài này có gì khác nhau cả.
 
Ờ đúng đó, nếu ko phải thiếu y=0 thì ko biết sai ở đâu ^^, nhưng mà bài đó đáng nhẽ phải báo lỗi chứ nhỉ, sao kết quả lúc nào cũng =0 ?
 
Ở bài thứ 2 thì n được gán là float, còn bài 1 thì là integer.
 
Back
Bên trên