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

Đề tài: Giải phương trình bậc 2 trên C, giúp mình sửa lỗi?

  1. #1
    No Avatar
    Mr.Kjng Khách

    Mặc định Giải phương trình bậc 2 trên C, giúp mình sửa lỗi?

    Em viết thế này sao không chạy được.Nó toàn báo lỗi sai.Các anh sửa giùm em cái code .
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4.  
    5. void nhap(float &a,float &b,float &c)
    6. {
    7.     printf(" Nhap a=");
    8.     scanf("%f",a);
    9.     printf(" Nhap b=");
    10.     scanf("%f",b);
    11.     printf(" Nhap c=");
    12.     scanf("%f",c);
    13. }
    14.  
    15. float tinh(float a,float b,float c)
    16. {
    17.     float delta;
    18.     delta=b*b - 4*a*c;
    19.     if (delta<0) return 0;
    20.     if (delta=0) return 1;
    21.     if (delta>0) return 2;
    22.     if (a==b==c==0) return 3;
    23.  
    24. }
    25.  
    26. void hienthi(float a,float b,float c)
    27. {
    28.     float x1,x2;
    29.     if (tinh(a,b,c)==0) printf(" Phuong trinh vo nghiem");
    30.     if (tinh(a,b,c)==1)
    31.     {
    32.         x1=x2=(float)-b/(2*a);
    33.         printf(" Phuong trinh co nghiem kep:%f",x1);
    34.     }
    35.     if (tinh(a,b,c)==2)
    36.     {
    37.         x1=(float)(-b+sqrt(b*b-4*a*c))/(2*a);
    38.         x2=(float)(-b-sqrt(b*b-4*a*c))/(2*a);
    39.         printf(" Phuong trinh co 2 nghiem phan biet \n");
    40.         printf(" Nghiem x1=%f \n",x1);
    41.         printf(" Nghiem x2=%f \n",x2);
    42.     }
    43.     if (tinh(a,b,c)==3) printf(" Phuong trinh vo so nghiem");
    44. }
    45.  
    46. void main()
    47. {
    48.     clrscr();
    49.     float a,b,c;
    50.     nhap(a,b,c);
    51.     hienthi(a,b,c);
    52.     getch();
    53. }

  2. #2
    Ngày gia nhập
    04 2009
    Bài viết
    6

    Tớ sửa thế này và nó chạy bình thường:

    1. Khai báo hàm void nhap(float &a,float &b,float &c)
    C Code:
    1.   --> void nhap(float *a,float *b,float *c)
    2.  
    3.  --> khi gọi trong hàm main --> nhap(&a, &b, &c)

    2. Hàm float tinh(float a,float b,float c)
    C Code:
    1.   Của cậu: if (delta = 0) return 1;
    2.  
    3. --> sửa thành: if (delta == 0) return 1;

  3. #3
    Ngày gia nhập
    07 2008
    Nơi ở
    /media/Anime
    Bài viết
    2,288

    Mình sửa cho biên dịch được thôi, chưa xem chạy đúng hay không :

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4.  
    5. void nhap(float &a,float &b,float &c)
    6. {
    7.     printf(" Nhap a=");
    8.     scanf("%f",a);
    9.     printf(" Nhap b=");
    10.     scanf("%f",b);
    11.     printf(" Nhap c=");
    12.     scanf("%f",c);
    13. }
    14.  
    15. float tinh(float a,float b,float c)
    16. {
    17.     float delta;
    18.     delta=b*b - 4*a*c;
    19.     if (delta<0) return 0;
    20.     if (delta=0) return 1;
    21.     if (delta>0) return 2;
    22.     if (a==b && b==c && c==0) return 3;
    23.  
    24. }
    25.  
    26. void hienthi(float a,float b,float c)
    27. {
    28.     float x1,x2;
    29.     if (tinh(a,b,c)==0) printf(" Phuong trinh vo nghiem");
    30.     if (tinh(a,b,c)==1)
    31.     {
    32.         x1=x2=(float)-b/(2*a);
    33.         printf(" Phuong trinh co nghiem kep:%f",x1);
    34.     }
    35.     if (tinh(a,b,c)==2)
    36.     {
    37.         x1=(float)(-b+sqrt(b*b-4*a*c))/(2*a);
    38.         x2=(float)(-b-sqrt(b*b-4*a*c))/(2*a);
    39.         printf(" Phuong trinh co 2 nghiem phan biet \n");
    40.         printf(" Nghiem x1=%f \n",x1);
    41.         printf(" Nghiem x2=%f \n",x2);
    42.     }
    43.     if (tinh(a,b,c)==3) printf(" Phuong trinh vo so nghiem");
    44. }
    45.  
    46. void main()
    47. {
    48.     clrscr();
    49.     float a,b,c;
    50.     nhap(a,b,c);
    51.     hienthi(a,b,c);
    52.     getch();
    53. }
    Càng yêu mèo thì mèo càng mập. Mèo càng mập ta lại càng yêu.

  4. #4
    Ngày gia nhập
    04 2009
    Bài viết
    6

    Mình đã run thành công, và có test các trường hợp nghiệm --> chạy ok!

    C Code:
    1. // quadraticEquation.cpp : Defines the entry point for the console application.
    2. //
    3.  
    4. #include "stdafx.h"
    5. #include <stdio.h>
    6. #include <conio.h>
    7. #include <math.h>
    8.  
    9. void nhap(float *a,float *b,float *c);
    10. float tinh(float a,float b,float c);
    11. void hienthi(float a,float b,float c);
    12.  
    13. int _tmain(int argc, _TCHAR* argv[])
    14. {  
    15.     float a,b,c;
    16.  
    17.     nhap(&a,&b,&c);
    18.  
    19.     hienthi(a,b,c);
    20.     getch();
    21.     return 0;
    22. }
    23.  
    24.  
    25. void nhap(float *a,float *b,float *c)
    26. {
    27.     printf(" Nhap a=");
    28.     scanf("%f",a);
    29.     printf(" Nhap b=");
    30.     scanf("%f",b);
    31.     printf(" Nhap c=");
    32.     scanf("%f",c);
    33. }
    34.  
    35. float tinh(float a,float b,float c)
    36. {
    37.     float delta;
    38.     delta=b*b - 4*a*c;
    39.     if (delta < 0) return 0;
    40.     if (delta == 0) return 1;
    41.     if (delta > 0) return 2;
    42.     if (a==b==c==0) return 3;
    43.  
    44. }
    45.  
    46. void hienthi(float a,float b,float c)
    47. {
    48.     float x1,x2;
    49.     if (tinh(a,b,c)==0) printf(" Phuong trinh vo nghiem");
    50.     if (tinh(a,b,c)==1)
    51.     {
    52.         x1=x2=(float)-b/(2*a);
    53.         printf(" Phuong trinh co nghiem kep:%f",x1);
    54.     }
    55.     if (tinh(a,b,c)==2)
    56.     {
    57.         x1=(float)(-b+sqrt(b*b-4*a*c))/(2*a);
    58.         x2=(float)(-b-sqrt(b*b-4*a*c))/(2*a);
    59.         printf(" Phuong trinh co 2 nghiem phan biet \n");
    60.         printf(" Nghiem x1=%f \n",x1);
    61.         printf(" Nghiem x2=%f \n",x2);
    62.     }
    63.     if (tinh(a,b,c)==3) printf(" Phuong trinh vo so nghiem");
    64. }

    Mình dùng run trên VS2005 , nên xóa hàm clrscr() của cậu đi.

  5. #5
    No Avatar
    Mr.Kjng Khách

    Cảm ơn các anh nhiều.Nhưng mà nó lại gặp một lỗi nữa là khi nhập 3 số a,b,c=0 thì nó bật khỏi chương trình không hiện lên dòng chữ phương trình vô nghiệm nữa.Không hiểu tại sao.Các anh thử test xem.
    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3. #include <math.h>
    4.  
    5. void nhap(float *a,float *b,float *c)
    6. {
    7.     printf(" Nhap a=");
    8.     scanf("%f",a);
    9.     printf(" Nhap b=");
    10.     scanf("%f",b);
    11.     printf(" Nhap c=");
    12.     scanf("%f",c);
    13. }
    14.  
    15. float tinh(float a,float b,float c)
    16. {
    17.     float delta;
    18.     delta=b*b - 4*a*c;
    19.     if (delta<0) return 0;
    20.     if (delta==0) return 1;
    21.     if (delta>0) return 2;
    22.     if (a==b==c==0) return 3;
    23.  
    24. }
    25.  
    26. void hienthi(float a,float b,float c)
    27. {
    28.     float x1,x2;
    29.     if (tinh(a,b,c)==0) printf(" Phuong trinh vo nghiem");
    30.     if (tinh(a,b,c)==1)
    31.     {
    32.         x1=x2=(float)-b/(2*a);
    33.         printf(" Phuong trinh co nghiem kep:%f",x1);
    34.     }
    35.     if (tinh(a,b,c)==2)
    36.     {
    37.         x1=(float)(-b+sqrt(b*b-4*a*c))/(2*a);
    38.         x2=(float)(-b-sqrt(b*b-4*a*c))/(2*a);
    39.         printf(" Phuong trinh co 2 nghiem phan biet \n");
    40.         printf(" Nghiem x1=%f \n",x1);
    41.         printf(" Nghiem x2=%f \n",x2);
    42.     }
    43.     if (tinh(a,b,c)==3) printf(" Phuong trinh vo so nghiem");
    44. }
    45.  
    46. void main()
    47. {
    48.     clrscr();
    49.     float a,b,c;
    50.     nhap(&a,&b,&c);
    51.     hienthi(a,b,c);
    52.     getch();
    53. }

  6. #6
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Mặc định Giải phương trình bậc 2 trên C, giúp mình sửa lỗi?

    C Code:
    1. float tinh(float a,float b,float c)
    2. {
    3.     float delta;
    4.     delta=b*b - 4*a*c;
    5.     if (delta<0) return 0;
    6.     if (delta==0) return 1;
    7.     if (delta>0) return 2;
    8.     if (a==b==c==0) return 3;
    9.  
    10. }
    Khi gọi lệnh return thì chương trình con sẽ kết thúc, bạn đặt return 3 ở cuối thì không bao giờ nó gọi đến vì khi a=b=c=0 thì delta=0 nó vào điều kiện return 1 rồi còn đâu.

    Chuyển cái điều kiện cuối lên kiểm tra đầu tiên là được.

  7. #7
    No Avatar
    Mr.Kjng Khách

    Ý mình sửa được rồi.Chô sai là chỗ điều kiện
    C Code:
    1. if (delta==0) return 1;

    Sửa thành
    C Code:
    1. if (delta==0 && a!=b) return 1;

    Như thế này là okj.Cám ơn mọi người giúp đỡ ...

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

  1. Cần Giúp đỡ về các thuật toán sắp xếp đơn giản trên C#!
    Gửi bởi nvhoachit trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 09-03-2013, 06:18 PM
  2. Giải pt bậc 2 trên C. Sửa giúp mình lỗi?
    Gửi bởi hoang luong trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 6
    Bài viết cuối: 14-10-2010, 06:22 PM
  3. bài giải phương trình bậc hai trên C. Giúp mình sửa lỗi?
    Gửi bởi vovietnghia trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 01-10-2010, 12:11 AM
  4. Cách lấy độ phân giải màn hình hiện tại trên C#? Xin mọi người giúp
    Gửi bởi son0nline trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 20-07-2010, 12:38 PM
  5. Cách giải dạng bài toán in tam giác dấu * trên diễn đàn, các bạn giúp mình thắc mắc?
    Gửi bởi bk7million trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 5
    Bài viết cuối: 19-06-2009, 02:47 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