Sửa lỗi code bài tập C

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

void nhap(int *n);
long tongn(int n);
double tongcos(int n);
double tongsin(int n);

int main(){

	int n, chon;

	while(chon != 4){
		printf("\n-----------------------------------------------------");
		printf("\nChon 1 de Tinh tong ham ((x - 5) * (x - 5) tu 1 den N");
		printf("\nChon 2 de Tinh tong ham cos(x)^2 tu 1 den N");
		printf("\nChon 3 de Tinh tong ham sin(x)^2 tu 1 den N");
		printf("\nChon 4 de Ket thuc");
		printf("\n-----------------------------------------------------");
		printf("\nChon: ");
		scanf("%d", &chon);

		switch(chon){
		case 1:
			nhap(&n);
			printf("\nTong ham ((x - 5) * (x - 5) tu 1 den N la: %d", tongn(n));
			break;
		case 2:
			nhap(&n);
			printf("\nTong ham cos(x)^2 tu 1 den N la: %f", tongcos(n));
			break;
		case 3:
			nhap(&n);
			printf("\nTong ham sin(x)^2 tu 1 den N la: %f", tongsin(n));
			break;
		case 4:
			break;
		default:
			printf("\nBan da nhap sai moi ban nhap lai!");
		}
	}

	return 0;
}

void nhap(int *n){
    while(1){
        printf("\nNhap so nguyen n: ");
        scanf("%d", n);
        if(*n < 1)
            printf("Ban can nhap n > 0, moi ban nhap lai!");
        else
            break;
    }
}

long tongn(int n){
	if(n == 1)
		return (n - 5) * (n - 5);
	else
		return n * n + tongn(n - 1);
}

double tongcos(int n){
	int i;
	double sum = 0;

	for (i = 1; i <= n; i++)
		sum += pow(cos((double)n), 2);

	return sum;
}

double tongsin(int n){
    if(n == 1)
        return pow(sin((double)n), 2);
    else
        return pow(sin((double)n), 2) + tongsin(n - 1);
}

Mình viết ra thế nhưng chức năng 2 và 3 kết quả chạy ra sai, mn giúp mình sửa lỗi với. Và yêu cầu này làm ntn hả mn: Thực hiện xong, chờ người dùng ấn 1 phím bất kì người dùng trở về menu chính.
Cảm ơn mn! :smiley:

Kết quả mong đợi ra nhiêu mà sai bạn.

Không chặn trường hợp nhập n=0 à.

Mình thêm điều kiện của n rồi.
VD ở cos nhập n = 2. Tính bằng máy tính cầm tay = 1.9984
còn ở chương trình n ra: 0.3463
VD ở sin nhập n = 2. Tính bằng máy tính cầm tay = 0.0015
còn ở chương trình n ra: 1.5348

máy tính của bạn để ở chế độ degree (360 độ), còn cos(x) trong C++ thì x là ở chế độ radian (2 pi = 360 độ).

cos(0o) = 1 nên bạn bấm cos(1o) + cos(2o) nó ra gần bằng 2. Cái đề yêu cầu n là radian hay là degree?

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?