30/09/2018, 22:59

Tính a^x=e^(x*ln(a))

#include<stdio.h>
#include<conio.h>
#include<math.h>
#define e 2.718281828
double Giaithua(int n)
{
	int P=1;
	for(int i=1;i<=n;i++)
	{
		P*=i;
	}
	return P;
}
double emu(float x,float c)
{
	
	float S=0,p=1,n=0;
	while(p>=c)
	{
		p=pow(float(x),n)/Giaithua(n);
		S+=p;
		n++;
	}
	return S;
}
double amu(double a,float x,float c)
{
    
	int P;
	P=pow(emu(x,c),(log((double)a)/log((double)e))); // Log cua bat ky co so nao 
	return P;
}
int main()
{
	float a,x,c;
	printf("Nhap a la:");
	scanf("%f",&a);
	printf("Nhap x la:");
	scanf("%f",&x);
	printf("Nhap c la:");
	scanf("%f",&c);

    printf("(%f)^(%f)= %lf",a,x,amu(a,x,c));
    
	getch();
}		

e k biết làm bị sai ở đâu mà kq tính ra nó như thế này : mấy số đầu từ <=3 thì kq bị thiếu 1, còn >5 trở đi là sai hết lun e có debug qua mà vẫn k hiểu lun, mn xem e bị sai ở đâu a -___-

Người bí ẩn viết 01:13 ngày 01/10/2018

double Giaithua(int n)

Kiểu dữ liệu của P không trùng với kiểu trả về của hàm, nên để kiểu trả về của hàm là int nhé: int Giaithua(int n)

double emu(float x,float c)

double amu(double a,float x,float c)

Hai cái này cũng tương tự, chú ý điều này: Kiểu dữ liệu của biến được return phải trùng với kiểu trả về của hàm.

p=pow(float(x),n)/Giaithua(n);

Sửa lại như sau: p = pow((float)x, n) / Giaithua(n);

P=pow(emu(x,c),(log((double)a)/log((double)e)));

Không nên dùng toán tử dấy phẩy dù bạn có thông minh và pro đến cỡ nào trừ vài trường hợp bắt buộc ! An toàn là nhất, và cũng đừng tiết kiệm dòng code !

Sơ qua là vậy, mình chỉ sửa những chỗ căn bản nhất cho bạn. Còn thuật toán của bạn thì bạn sẽ tự xem lại. Nếu có thể, hãy tập Debug cho quen, có nhiều lỗi ngớ ngẩn ta không phát hiện ra, chỉ cần Debug xíu là biết ngay

Thái Anh viết 01:08 ngày 01/10/2018

thank a @Minh,e sẽ tiếp tục về trau dồi thêm a

Thái Anh viết 01:02 ngày 01/10/2018

ơ toán tử dấu phẩy là sao hả a e k hiểu lắm ? :3 e có pro đâu newbie mà a T.T

Người bí ẩn viết 01:11 ngày 01/10/2018

thank a @Minh,e sẽ tiếp tục về trau dồi thêm a

Thằng @Minh là thằng nào vậy -_- My name is @tcm ok ?

ơ toán tử dấu phẩy là sao hả a e k hiểu lắm ?

À sorry nhiều, không nhìn cái hàm pow nên tưởng toán tử dấu phẩy

e có pro đâu newbie mà a

Mình ví dụ thôi bạn Vì toán tử dấu phẩy khá rắc rối nếu không nắm kỹ

Thái Anh viết 00:59 ngày 01/10/2018

:v đấy là gọi tên thân mật đấy a !! e đi sửa lỗi ngay và luôn đây a

Bài liên quan
0