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

Đề tài: Giải phương trình bậc 2 sử dụng con trỏ....???

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

    Mặc định Giải phương trình bậc 2 sử dụng con trỏ....???

    *đề bài này là :
    -xây dựng hàm giải phương trình bậc 2 sử dụng tham số hình thức con trỏ .GPTB2(float *a,float *b,float *c)

    -mình làm
    Code:
    #include"stdio.h"
    #include"conio.h"
    #include"math.h"
    void Gptb2(float *a,float *b,float *c)
    {
    	  float  delta,x1,x2;
    
    	  delta=pow(b,2)-4*a*c;
    	  if(delta<0)
    	  printf("phuong trinh vo nghiem :");
    	  else
    		if(delta==0)
    		printf("phuong trinh co nghiem kep x1=x2=%f",-b/(2*a) );
    		else
    		printf("phuong trinh co 2 nghiem phan biet :")
    		printf("x1=%f\n",(-b-sqrt(delta))/(2*a));
    		printf("x2=%f\n",(-b+sqrt(delta))/(2*a));
    
    }
    main()
    {
    	int a,b,c;
    	clrscr();
    	do{
    		printf("nhap a : b : c :");
    		scanf("%f%f%f",&a,&b,&c);
    	  }
    	  while(a==0);
    	Gptb2(&a,&b,&c);
            getch();
    }
    chưa chạy được nó báo lỗi ngay chỗ delta=pow(b,2)-4*a*c; mà cụ thể nó báo ngay dấu "-" .không biết sai lỗi nào mong anh em giúp đỡ bài này thanks nhiều

  2. #2
    Ngày gia nhập
    11 2008
    Nơi ở
    Neverland
    Bài viết
    48

    Kiểu giải này ít thấy gặp quá các tham số a b c có cần thay đổi giá trị đâu mà truyền con trỏ vào . Và bạn truyền con trỏ vào thì sao lại sử dụng con trỏ đó để tính chứ :
    C Code:
    1. delta=pow(b,2)-4*a*c;//a , b , c đều là con trỏ giá trị mà nó trỏ đến là *a , *b , *c mấy câu lệnh sau bạn đều mắc lỗi này
    Thêm nữa :
    C Code:
    1. void Gptb2(float *a,float *b,float *c);
    2. //...
    3. int a,b,c;//Tham số cho Gptb2() là con trỏ float bạn khai báo biến int rồi truyền con trỏ int vào hàm --> xảy ra sự ép kiểu không được hay cho lắm
    Sửa lại cho nó chạy nhưng cách này củ chuối quá :
    C Code:
    1. #include "stdio.h"
    2. #include "conio.h"
    3. #include "math.h"
    4. void Gptb2(float *a,float *b,float *c)
    5. {
    6.     float  delta,x1,x2;
    7.  
    8.     delta=pow(*b,2)-4*(*a)*(*c);
    9.     if(delta < 0)
    10.         printf("phuong trinh vo nghiem\n");
    11.     else
    12.     {
    13.         if(delta==0)
    14.             printf("phuong trinh co nghiem kep x1=x2=%f\n",-(*b)/(2*(*a)) );
    15.         else
    16.         {
    17.             printf("phuong trinh co 2 nghiem phan biet :");
    18.             printf("x1=%f\n",(-(*b)-sqrt(delta))/(2*(*a)));
    19.             printf("x2=%f\n",(-(*b)+sqrt(delta))/(2*(*a)));
    20.         }
    21.     }
    22. }
    23. int main()
    24. {
    25.     float a,b,c;
    26.     do
    27.     {
    28.         printf("nhap a , b , c :");
    29.         scanf("%f%f%f",&a,&b,&c);
    30.     }
    31.     while(a==0);
    32.     Gptb2(&a,&b,&c);
    33.     getch();
    34.     return 0;
    35. }
    Đã được chỉnh sửa lần cuối bởi trung_dk070384 : 23-12-2008 lúc 06:55 PM.
    I'm superman

  3. #3
    Ngày gia nhập
    11 2008
    Bài viết
    5

    mà tự nhiên làm con trỏ chi cho phức tạp hóa vấn đề nhỉ

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

    cái bài này thầy kêu làm sao thì mình làm vậy chịu thôi chứ thấy phức tạp .thanks các bạn nhiều

  5. #5
    Ngày gia nhập
    12 2008
    Bài viết
    21

    Có vẻ như bạn chưa hiểu về con trỏ rồi.
    Như trường hợp của bạn, khi muốn tính toán trên các giá trị của a,b,c thì phải dùng : *a, *b, *c chứ. VD:

    delta=pow(*b,2)-4*(*a)*(*c);
    thay vì :
    delta=pow(b,2)-4*a*c;

    Bạn nhớ là ta chỉ truyền cái "địa chỉ" của biến chứ ko truyền "giá trị" của biến.
    Nếu a là 1 con trỏ thì (*a) mới là giá trị ta cần.

Các đề tài tương tự

  1. Cung cấp giấy ik plus, Paper One, Plus A+, Double A, Giấy Thái Lan, Giấy Bãi Bằng, bìa màu, băng dính, mica các loại
    Gửi bởi dungptvietthanh trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 07-06-2013, 04:05 PM
  2. Chung cư Đại Thanh giảm sốc 10tr/vnđ cho các căn hộ. giảm và liên tục giảm…!!
    Gửi bởi lanthanh91 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 09-10-2012, 10:27 AM
  3. Trả lời: 0
    Bài viết cuối: 06-08-2012, 07:01 PM
  4. Trả lời: 0
    Bài viết cuối: 04-08-2012, 03:08 PM
  5. Trả lời: 0
    Bài viết cuối: 24-05-2012, 04:04 PM

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