Từ 1 tới 8 trên tổng số 8 kết quả

Đề tài: tính 1/(2+1/(2+1/2)) không được

  1. #1
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Wink tính 1/(2+1/(2+1/2)) không được

    e muốn tính 1/(2+1/(2+1/2)) mà nó lại ra 0.00000

    PHP Code:
    void bai7(void)
        {
          
    float a=sqrt(3+sqrt(3+sqrt(3)));
          
    float b=1/(2+1/(2+1/2));
           
    printf("Câu a. %.8f \n" );
          
    printf("Câu b. %.8f " ,b);
       } 

    E tính biểu thức kết quả ra câu a thì đúng nhưng câu b lại cho ra bằng 0.00000


    Help me! plz!



    PHP Code:
    void bai9(void)
        {
          
    int x;
           
    printf("Nhâp x : ");
          
    scanf("%d", &x);
          
    printf("%ld" x^7); 
    e chả hiểu tại sao e nhập x vào in ra x^7 lại sai nữa :|
    Đã được chỉnh sửa lần cuối bởi langman : 24-01-2008 lúc 09:12 AM.

  2. #2
    Ngày gia nhập
    12 2007
    Bài viết
    28

    Bài này sai một vài lỗi như sau:
    - Bài 7: Dấu "/" là dấu chia nguyên, nó sẽ cho ra kết quả là phần thương của phép chia, chứ không cho ra kết quả là số thực. Ví dụ: 3/2 = 1; 3/5 = 0; (vì thương trong phép chia 3 cho 2 là 1, thương trong phép chia 3 cho 5 là 0)
    Nếu bạn muốn ra kết quả là số thực thì phải viết: 3 * 1.0 / 2; 3 * 1.0 /5
    - Bài 9: x^7 không có nghĩa là "x mũ 7" mà là "x XOR 7", muốn tính "x mũ 7", phải dùng hàm pow(x,7) (mình không nhớ rõ lắm, bạn kiểm tra lại giúp) trong thư viện math.h
    Hy vọng giúp được bạn.

  3. #3
    Ngày gia nhập
    10 2007
    Nơi ở
    HCM
    Bài viết
    46

    bài 7 câu b: bạn nên hiểu thế này với 2 khai báo sau:
    float a=1/2;
    float b=1.0/2;
    thì giá trị của a=0 và giá trị của b=0.5
    do đó với bài 7b muốn hiện kết quả đúng thì bạn phải gán là
    b=1/(2+1/(2+1/2.0))

    bài 9
    bài này mình đâu thấy gì sai, toán ^ là toán tử XOR thì thực hiện in ra màn hình x^7 sai lại sai nhỉ

  4. #4
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Code trông bùng nhùng quá. fix lại

    PHP Code:
    #include <stdio.h>
    #include <math.h>
    void bai7();
    void bai9();

    int main(void)
    {
        
    bai7();
            
    bai9();
        return 
    0;
    }

    void bai7()
    {
        
    float b 1/( 1/( 1/2.0 ));
            
    printf("b = %f",b);
    }

    void bai9()
    {
         
    int x;
        
    printf("Nhap x = ");
        
    scanf("%d",&x);

        
    printf("\nx = %d",x);

    None!

  5. #5
    Ngày gia nhập
    06 2007
    Nơi ở
    C:\WINDOWS\system32\dllcache\
    Bài viết
    3,006

    Cám ơn các bạn mình đã hiểu bài 7. / là div

    vậy nếu mình muốn tính thương của 2 số thì mình làm thế nào ?
    ví dụ
    PHP Code:
    void bai10(void)
        {
           
    int a,b;
          
    printf("Nhâp a : ");
          
    scanf("%d",&a);
          
    printf("Nhâp b : ");
          
    scanf("%d", &b);
          
    printf("Tông cua 2 sô : %d" a+b);
          
    printf("\nHiêu cua 2 sô : %d"a-b);
          
    printf("\nTích cua 2 sô : %d"a*b);
          
    printf("\nThuong cua 2 sô : %.2f"a/b);
       } 
    trời ạ mình đọc sách của áp tếch quển tiếng việt nó viết là :

    trích nguyên thể :

    PHP Code:
    Chúng ta xem xét một ví dụ về toán tử số mũ .

    9^2

    Ở đây 9 là cơ số và 2 là số mũ

    Số bên trái 
    '^' là cơ số và số bên phải '^' là số mũ

    kết quả 9
    ^2 là 9*9=81

    ... 

    lạ thật mình thử với pow rồi mà sao nó vẫn sai nhỉ bạn ơi ??


    PHP Code:
    void bai9(void)
        {
          
    int x;
           
    printf("Nhâp x : ");
          
    scanf("%d", &x);
          
    printf("Kêt qua là : %d" ,pow(x,7));
       } 
    Đã được chỉnh sửa lần cuối bởi langman : 24-01-2008 lúc 01:31 PM.

  6. #6
    Ngày gia nhập
    10 2007
    Nơi ở
    HCM
    Bài viết
    46

    Mặc định tính 1/(2+1/(2+1/2)) không được

    Nói tiếp vấn đề bài 7
    -khi bạn khai báo int b=phầnnguyên.phầnthậpphân thì tức là b chỉ lấy giá trị phần nguyên thôi vì b là biến số nguyên
    -khi thực hiện phép gán k=a/b nếu a và b đều là kiểu số nguyên thì kết quả (của a/b) chắc chắn là số nguyên, nếu a hoặc b là kiểu số thực thì kết quả là kiểu số thực. Sau đó tùy theo kiểu dữ liệu của biến k mà giá trị a/b sẽ được chuyển dạng tương ứng
    ví dụ
    float a=3.0;
    int b=2.1; ---> cho dù có gán thế này thì b vẫn chỉ là 2 thôi
    float k=a/b ---> giá trị của k sẽ là 1.5
    int k2=a/b ---> giá trị của k2 sẽ là 1

    /hàm pow mình vẫn chưa hiểu tại sao.

  7. #7
    Ngày gia nhập
    11 2007
    Bài viết
    153

    Trích dẫn Nguyên bản được gửi bởi langman Xem bài viết
    Cám ơn các bạn mình đã hiểu bài 7. / là div

    vậy nếu mình muốn tính thương của 2 số thì mình làm thế nào ?
    ví dụ
    PHP Code:
    void bai10(void)
        {
           
    int a,b;
          
    printf("Nhâp a : ");
          
    scanf("%d",&a);
          
    printf("Nhâp b : ");
          
    scanf("%d", &b);
          
    printf("Tông cua 2 sô : %d" a+b);
          
    printf("\nHiêu cua 2 sô : %d"a-b);
          
    printf("\nTích cua 2 sô : %d"a*b);
          
    printf("\nThuong cua 2 sô : %.2f"a/b);
       } 
    trời ạ mình đọc sách của áp tếch quển tiếng việt nó viết là :

    trích nguyên thể :

    PHP Code:
    Chúng ta xem xét một ví dụ về toán tử số mũ .

    9^2

    Ở đây 9 là cơ số và 2 là số mũ

    Số bên trái 
    '^' là cơ số và số bên phải '^' là số mũ

    kết quả 9
    ^2 là 9*9=81

    ... 

    lạ thật mình thử với pow rồi mà sao nó vẫn sai nhỉ bạn ơi ??


    PHP Code:
    void bai9(void)
        {
          
    int x;
           
    printf("Nhâp x : ");
          
    scanf("%d", &x);
          
    printf("Kêt qua là : %d" ,pow(x,7));
       } 
    Muốn tính thương 2 số mà khi bạn khai 2 biến là int thì ta ép kiểu nó theo cách sau: (float)a/b còn đối với bài sử dụng hàm pow là do bạn chưa include thử viện math vào, đây là thư viện có các hàm toán học để xử lý bài toán.

  8. #8
    Ngày gia nhập
    10 2007
    Nơi ở
    HCM
    Bài viết
    46

    Trích dẫn Nguyên bản được gửi bởi comeonbaby
    đối với bài sử dụng hàm pow là do bạn chưa include thử viện math vào, đây là thư viện có các hàm toán học để xử lý bài toán
    mình đã include thư viện math.h rồi nhưng kết quả xuất vẫn sai
    theo mình vấn đề ở đây là do C ko chấp nhận việc chuyển đổi dữ liệu khi xuất giữa kiểu thực và kiểu nguyên, mình đã thử làm 2 vd sau (các bạn có thể chạy thử trên VC6.0, BC3.1, DevC)
    Code:
    //vd1
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    void main()
    {	int x;
    	printf("\nNhap x=");
    	scanf("%d",&x);
    	printf("\n%d",pow(x,3.8));
    	getch();
    }
    ==> sẽ luôn cho kết quả là 0, hoặc với đoạn code sau
    Code:
    //vd2
    #include<stdio.h>
    #include<conio.h>
    void main()
    {	int x;
    	printf("\nNhap x=");
    	scanf("%d",&x);
    	printf("\n%f",x);
    	getch();
    }
    ==> kết quả vẫn là 0
    như vậy có thể kết luận việc chuyển dạng kiểu dữ liệu giữa số thực và số nguyên trong C khi xuất làm cho kết quả bị sai. Tuy nhiên cũng có thể dùng ép kiểu như sau
    đối với vd1: sửa lại hàm code ở hàm printf: printf("\n%d",int(pow(x,3.8) + 0.5)); thì sẽ cho kết quả đúng
    đối với vd2: sửa lại là printf("\n%f",float(x));

    mình nghĩ như vậy là ổn rồi, nếu có sai sót mong các bạn góp ý thêm

Quyền hạn của bạn

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