Hiển thị kết quả từ 1 đến 5 / 5
  1. #1
    Tham gia
    16-09-2008
    Bài viết
    281
    Like
    0
    Thanked 6 Times in 6 Posts

    Đổi ra độ trong C

    Ta có:
    cos(double x) và sin(double x) và tan(double x): tính cos và sin và tang của x (đơn vị của x là radian chứ không phải là độ, 1 radian bằng khoảng 57 độ, cụ thể là bằng 180/3.14 .

    Nhưng nếu ta có cos(x)=1/2--> làm sao để suy ra được x bằng bao nhiêu độ?
    Các bac biết hương dẫn giúp.
    Thanks
    Quote Quote

  2. Thành viên Like bài viết này:


  3. #2
    Tham gia
    02-05-2011
    Bài viết
    133
    Like
    0
    Thanked 67 Times in 49 Posts
    Đây là bài toán tìm nghiệm của phương trình. Bạn có thể dùng các phương pháp xấp xỉ để tìm nghiệm gần đúng của nó. Có rất nhiều phương pháp như: Chia đôi, Newton, dây cung,...

    cos(x) = 1/2 <=> cos(x) - 1/2 = 0;

    Đặt: f(x) = cos(x) - 1/2

    Nghiệm của pt trong đoạn [0, PI]

    Phương pháp chia đôi như sau:
    f(0) > 0
    f(PI) < 0
    f((0 + PI)/2) = f(PI/2) < 0
    => Nghiệm của pt sẽ nằm trong đoạn [0, PI/2] (vì f(x) là một hàm liên tục nên chắc chắn đoạn[PI/2, PI] sẽ ko có nghiệm, do 2 đầu cùng dấu nên trong quá trình biến thiên thì nó sẽ ko cắt trục hành Ox. Nghiệm này chắc chắn nằm trên đoạn [0, PI/2] vì 2 đầu này có giá trị trái dấu, trong quá trình biến thiên từ giá trị âm sang giá trị dương thì nó chắc chắn sẽ cắt trục hoành Ox tại nghiệm của nó).

    Tiếp tục tính:
    f((0 + PI/2)/2) = f(PI/4) > 0
    Nên nghiệm của pt sẽ nằm trong đoạn [PI/4, PI/2]
    ...
    Cứ thế tiếp tục.... tới khi sai số nhỏ hơn một sai số nào đó đã chọn trước, thì giá trị chia đôi sẽ hội tụ về nghiệm của phương trình, nó chính là nghiệm gần đúng của phương trình. Đó chính là x cần tìm(đơn vị là radian).

    Các phương pháp kia bạn có thể tự tìm hiểu thêm
    Được sửa bởi predator0906 lúc 10:43 ngày 18-09-2011

  4. 2 thành viên Like bài viết này:


  5. #3
    Tham gia
    31-07-2011
    Bài viết
    57
    Like
    17
    Thanked 32 Times in 32 Posts
    Bac xem gium em bai nay
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    
    void xoa(char s[])
    {
       //xoa cac khoang trang dau chuoi.
    	int l = strlen(s);
       for(int i = 0; i < l; i++)
       	if (s[i] == ' ')
       	{
          	for (int j = i; j <= l; j++)
             	s[j] = s[j+1];
             i--;
             l--;
          }
       	else
          	break;
    
       s[l] = '\0';
       printf("String length = %d\n", strlen(s));
    
    
       //xoa cac khoang trang cuoi chuoi.
       l = strlen(s);
       for (int i = l - 1; i >= 0; i--)
       	if (s[i] == ' ')
          	l--;
       else                     
       	break;
       s[l] = '\0';
    
    
       //xoa cac khoang trang thua o giua
       l = strlen(s);
       for(int i = 1; i < l; i++)
       	if (s[i] == ' ' && s[i+1] == ' ')
          {
          	for (int j = i; j < l - 1; j++)
             	s[j] = s[j+1];
             l--;
             i--;
          }
       s[l] = '\0';
    
       printf("l = %d\n", l);
    
       printf("String length = %d\n", strlen(s));
    
    }
    
    void main()
    {
       char retry;
       do {
       clrscr();
    	char s[100];
    	printf("Nhap vao chuoi: \n");
       gets(s);
       printf("Chuoi vua nhap: \n");
       puts(s);
       printf("String length = %d\n\n\n", strlen(s));
       xoa(s);
    	printf("Chuoi sau khi xoa bot cac khoang trang thua: \n");
       puts(s);
       printf("String length = %d\n", strlen(s));
       printf("Retry? (Y/N)");
       scanf("%s",&retry);
       } while (retry == 'Y' || retry == 'y');
    }
    Em lam lan dau thi dc, con bam Y de thu lai thi no ko cho nhap nua. Loi nay sua the nao vay bac?

    Sry, vietkey no ko tu load dc

  6. Thành viên Like bài viết này:


  7. #4
    Tham gia
    02-05-2011
    Bài viết
    133
    Like
    0
    Thanked 67 Times in 49 Posts
    Quote Được gửi bởi hell_angel7602 View Post
    Bac xem gium em bai nay
    Code:
    #include <stdio.h>
    #include <conio.h>
    #include <string.h>
    
    void xoa(char s[])
    {
       //xoa cac khoang trang dau chuoi.
    	int l = strlen(s);
       for(int i = 0; i < l; i++)
       	if (s[i] == ' ')
       	{
          	for (int j = i; j <= l; j++)
             	s[j] = s[j+1];
             i--;
             l--;
          }
       	else
          	break;
    
       s[l] = '\0';
       printf("String length = %d\n", strlen(s));
    
    
       //xoa cac khoang trang cuoi chuoi.
       l = strlen(s);
       for (int i = l - 1; i >= 0; i--)
       	if (s[i] == ' ')
          	l--;
       else                     
       	break;
       s[l] = '\0';
    
    
       //xoa cac khoang trang thua o giua
       l = strlen(s);
       for(int i = 1; i < l; i++)
       	if (s[i] == ' ' && s[i+1] == ' ')
          {
          	for (int j = i; j < l - 1; j++)
             	s[j] = s[j+1];
             l--;
             i--;
          }
       s[l] = '\0';
    
       printf("l = %d\n", l);
    
       printf("String length = %d\n", strlen(s));
    
    }
    
    void main()
    {
       char retry;
       do {
       clrscr();
    	char s[100];
    	printf("Nhap vao chuoi: \n");
       gets(s);
       printf("Chuoi vua nhap: \n");
       puts(s);
       printf("String length = %d\n\n\n", strlen(s));
       xoa(s);
    	printf("Chuoi sau khi xoa bot cac khoang trang thua: \n");
       puts(s);
       printf("String length = %d\n", strlen(s));
       printf("Retry? (Y/N)");
       scanf("%s",&retry);
       } while (retry == 'Y' || retry == 'y');
    }
    Em lam lan dau thi dc, con bam Y de thu lai thi no ko cho nhap nua. Loi nay sua the nao vay bac?

    Sry, vietkey no ko tu load dc
    scanf("%s",&retry); => đổi lại scanf("%c",&retry);

  8. Thành viên Like bài viết này:


  9. #5
    Tham gia
    06-01-2010
    Bài viết
    216
    Like
    0
    Thanked 12 Times in 10 Posts
    Quote Được gửi bởi phuongnam0806 View Post
    bạn thử giải thích tại sao lại thay %s => %c được ko mình cũng chưa hiểu lắm
    %s là ký tự định dạng dành cho kiểu chuỗi String. Còn %c là ký tự định dạng cho kiểu ký tự Char.
    Với hàm
    PHP Code:
    scanf("%s", &retry); 
    bạn chỉ nhận được 1 giá trị đầu tiên của chuỗi thôi. Với lại rất ít khi người ta dùng scanf cho các kiểu dữ liệu Char và String. Bạn thử tìm hiểu hàm getch() và get() thử xem sao nhé!

  10. Thành viên Like bài viết này:


Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •