30/09/2018, 20:59

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("
-----------------------------------------------------");
		printf("
Chon 1 de Tinh tong ham ((x - 5) * (x - 5) tu 1 den N");
		printf("
Chon 2 de Tinh tong ham cos(x)^2 tu 1 den N");
		printf("
Chon 3 de Tinh tong ham sin(x)^2 tu 1 den N");
		printf("
Chon 4 de Ket thuc");
		printf("
-----------------------------------------------------");
		printf("
Chon: ");
		scanf("%d", &chon);

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

	return 0;
}

void nhap(int *n){
    while(1){
        printf("
Nhap 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!

Bé tập Code viết 23:12 ngày 30/09/2018

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

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

NOName viết 23:05 ngày 30/09/2018

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

viết 23:03 ngày 30/09/2018

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?

Bài liên quan
0