# GÓC SÁNG TẠO > Khu vực lập trình > C/C++ >  phương trình bậc 2

## seluoncocach

giúp em tìm ra chỗ sai trong bài này với:

#include<stdio.h>
#include<conio.h>
#include<math.h>

void main()
{
clrscr();
float a,b,c,delta,X1,X2;
printf("A: ");
scanf("%f",&a);
printf("B: ");
scanf("%f",&b);
printf("C: ");
scanf("%f",&c);
delta= (b*b-4*a*c);
if (delta<0) printf("
vo nghiem");
if (delta==0) printf("
nghiem kep X= %.2f",-b/(2*a));
if (delta>0) printf("
X1= %f 
X2= %f ",(-(b*b)+sqrt((double)delta))/(2*a),(-(b*b)-sqrt((double)delta))/(2*a));
getch();
}

đại khái là như vậy, tuy cách lập trình hơi "non" vì em mới học tới if thôi nên áp dụng thử[IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

----------


## hoanggiang212

> #include<stdio.h>
> #include<conio.h>
> #include<math.h>
> 
> void main()
> {
> clrscr;
> float a,b,c,delta,X1,X2;
> printf("A: ");
> ...


Bạn thử chạy chương trình này xem, sai ở clrscr();

----------


## votantai

[IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]) cái thằng nghiệp ngu C mà còn sửa sai cho người # kìa =)) buồn cười vãi chưởng [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG])Bài e đọc qua cơ bản về ngôn ngữ và thuật toán đã đúng nhưng e cần xem lại xem X e lấy đâu ra , e mới khai báo X1,X2 thôi mà. Nên tách bớt các thuật toán ra đừng làm tắt thế khi đọc để sửa cũng khó . NHững bài như này chỉ là bài cơ bản về ngôn ngữ C thôi ,chúc e thành công [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

----------


## nguyendinh

> [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]) cái thằng nghiệp ngu C mà còn sửa sai cho người # kìa =)) buồn cười vãi chưởng [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG])Bài e đọc qua cơ bản về ngôn ngữ và thuật toán đã đúng nhưng e cần xem lại xem X e lấy đâu ra , e mới khai báo X1,X2 thôi mà. Nên tách bớt các thuật toán ra đừng làm tắt thế khi đọc để sửa cũng khó . NHững bài như này chỉ là bài cơ bản về ngôn ngữ C thôi ,chúc e thành công [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]


trước khi nói người ta ngu thì nên coi mình có khôn không cái đã bạn àh .Bạn ấy khai báo nhưng bạn ấy ko sử dụng cùng lắm thì chương trình báo *warning* thui, bỏ lun X1 , X2 vẫn đúng như thường àh.
Bài bạn lỗi ở chỗ rất đơn giản , bài này sử dụng cấu trúc *if .. else* mà bạn chỉ dùng *if* nên khi xét delta thì nó hơi rối tí thui hihihi ...


```
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
clrscr;
float a,b,c,delta;
printf("A: ");
scanf("%f",&a);
printf("B: ");
scanf("%f",&b);
printf("C: ");
scanf("%f",&c);
delta= (b*b-4*a*c);
if (delta < 0) 
 printf("
vo nghiem");
else if (delta == 0) 
 printf("
nghiem kep X= %.2f",-b/(2*a));
else
  printf("
X1= %f 
X2= %f ",(-b-sqrt(delta))/(2*a) , (-b+sqrt(delta))/(2*a));
getch();
}
```

----------


## blogwhey1

> [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]) cái thằng nghiệp ngu C mà còn sửa sai cho người # kìa =)) buồn cười vãi chưởng [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG])Bài e đọc qua cơ bản về ngôn ngữ và thuật toán đã đúng nhưng e cần xem lại xem X e lấy đâu ra , e mới khai báo X1,X2 thôi mà. Nên tách bớt các thuật toán ra đừng làm tắt thế khi đọc để sửa cũng khó . NHững bài như này chỉ là bài cơ bản về ngôn ngữ C thôi ,chúc e thành công [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]


Hài, ông chạy chương trình trên xem nó báo sai ở đâu

Tôi chỉ nói chỗ báo sai khi thực hiện chương trình.

----------


## sunny

> Bạn thử chạy chương trình này xem, sai ở clrscr();


mình dùng C-Free 4.1 vẫn chạy bình thường ko có lỗi nào , chỉ có kết quả hơi sai thì phải , chắc bạn ấy sai công thức tính X1 , X2 :emlaugh:

----------


## nvtuantt

Mình dùng C Free sao nó báo lỗi ở đấy nhỉ :|

----------


## hangngand

sorry mình nhầm , mình copy đoạn clrscr chứ hok phải clrscr()

----------


## quangminh01

công thức bậc hai đó em đã dò kỹ lắm rồi, không sai đâu

----------


## wapa

Mình mới học C++, có vài chỗ trong ct trên mình không hiểu, các bạn có thể giải thích cho mình?
Đó là các dòng:


```
scanf("%f",&a);
```



```
printf("
nghiem kep X= %.2f",-b/(2*a));
```





```
printf("
X1= %f 
X2= %f ",(-b-sqrt(delta))/(2*a) , (-b+sqrt(delta))/(2*a));
```



```
getch();
```

Cảm ơn nhiều

----------


## ngtuananh1122

> Mình mới học C++, có vài chỗ trong ct trên mình không hiểu, các bạn có thể giải thích cho mình?
> Đó là các dòng:
> 
> 
> ```
> scanf("%f",&a);
> ```
> 
> 
> ...




```
scanf("%f",&a);
```

scanf là hàm nhập từ bàn phím , %f là cung cấp vùng nhớ kỉu float cho biến a thì phải.


```
printf("
nghiem kep X= %.2f",-b/(2*a));
```

cái này chỉ là kĩ thuật in thui , kỉu float mặc định in ra màn hình sẽ in 6 số sau dấu thập phân , %.2f thì chỉ lấy 2 số , bạn thử 3 , 4 , 5.... coi sao.



```
printf("
X1= %f 
X2= %f ",(-b-sqrt(delta))/(2*a) , (-b+sqrt(delta))/(2*a));
```

printf là hàm in ra màn hình , ngay chỗ nào có %f (đối với kĩu float và double hay %....khác) thì nó sẽ in ra kết quả
Và cái này là ngôn ngữ C , bạn nên học kĩ C++ trước gòi coi sẽ hĩu , chứ đang cái này mập mờ thì coi cái kia khó hĩu lắm , hồi đó mình cũng vậy hihihi , bít 1 cái gòi học cái kia nhanh lắm :emlaugh:

----------


## haphuonghoang

với các dòng lệnh trên thì bạn nên tìm giáo trình c=>các lệnh đơn để tìm hiểu, tron áy nó nói rất cụ thể đấy
Bạn đã đăng 2 bài liên tục có cùng nội dung. Vui lòng đợi sau 3 phút nữa để thử lại
với các dòng lệnh trên bạn nên tìm giáo trình C phần các lệnh đơn để đọc. trong ấy nó chỉ dẫn khá cụ thể đấy

----------


## hoanganh1

Cảm ơn bạn đã giúp đỡ, [you] :angel_not::angel_not::angel_not:

----------


## nguyenvanhoang99

*Oack, mấy ank hình như chưa đặt điều kiện a=0 thì sao? b=0 thì sao? c=0 thì sao còn a=0 && b=0 && c=0 thì sao? a=0 && b=0 && c!=0 thì sao? còn ...... mấy cái đó có cần thiết đặt vào bài không nhở [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG])*​

----------


## nguyenquyhuong

đã edit

----------


## blogwhey1

> *Oack, mấy ank hình như chưa đặt điều kiện a=0 thì sao? b=0 thì sao? c=0 thì sao còn a=0 && b=0 && c=0 thì sao? a=0 && b=0 && c!=0 thì sao? còn ...... mấy cái đó có cần thiết đặt vào bài không nhở [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG])*​


*mình nghĩ ko cần kiểm soát nhìu thế đâu bạn , chỉ cần khi nhập kiểm soát sao cho người nhập a!=0 ko la ok gòi , b và c==0 ko có ảnh hưởng kết quả đâu , a==0 thì nó bị lỗi chia cho 0 ở kết quả thui.
mới học về cái này nên chưa bít nhìu , thanks bạn nhìu nhá ! :angel_not:
*

----------


## beprongviet

*#include<stdio.h>*
*#include<conio.h>*
*#include<math.h>*
*main(){*
*float a,b,c,delta;*
*printf("
 Nhap a:");scanf("%f",&a);*
*printf("
 Nhap b:");scanf("%f",&b);*
*printf("
 Nhap c:");scanf("%f",&c);*
*delta=(b*b-4*a*c);*
*if (delta<0)*
*printf("
 Ptrinh vo nghiem");*
*if(del==0)*
*printf("
 Ptrinh co nghiem kep X=%f",-b/2*a);*
*else printf("
 Ptrinh co2 nghiem x1=%f \t x2=%f",(-b+sqrt(delta))/2*a,(-b-sqrt(delta))/2*a);*
*getch();*
*}* 
*Bạn thử đoạn code này xem nhé ! Chúc thành công ![IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]*

----------


## nongdanseo

*Vừa mới pozt bài nhắc thiếu điều kiện xong lại đến lượt ông này thiếu a!=0 tiếp @-) pó tay*​

----------


## thuhongnt

chắc là sai mê làm bài ko để ý mấy cái *#* trước ấy mà :a:
==================================================  ============================
spammmmmmmmmmmmmmmmmmmmmmmmmmmmmmm

----------


## anhdgc

> *Vừa mới pozt bài nhắc thiếu điều kiện xong lại đến lượt ông này thiếu a!=0 tiếp @-) pó tay*​


 *ừ nhỉ mình quên mất cái đó, lâu không học bây giờ quên cả giải phương trình :emlaugh:*
*vậy hells giải thế nào thì giúp người ta đi*

----------


## lebichvan888

*Các bạn xem qua mình đã làm thử
#include<stdio.h>*
*#include<conio.h>*
*#include<math.h>*
*void main()*
{ 
int a,b,c; 
float x, x1, x2, delta; 
printf ("nhap a="); 
scanf ("%d",&a); 
printf ("nhap b="); 
scanf ("%d",&b); 
printf ("nhap c="); 
scanf ("%d",&c); 
delta = b*b - 4*a*c; 
if (delta < 0) 
{ 
printf ("phuong trinh vo nghiem"); 
} 
if (delta == 0) 
{ 
x = (1.0 * (-b))/(2*a); 
printf ("phuong trinh co nghiem kep"); 
printf ("x = %0.2f", x); 
} 
if (delta > 0) 
{ 
printf ("phuong trinh co 2 nghiem phan biet"); 
x1=(-b+sqrt(delta))/(2*a); 
x2=(-b-sqrt(delta))/(2*a); 
printf ("x1 = %0.2f", x1); 
printf ("x2 = %0.2f", x2); 
} 
}

----------


## talkmylove

> *Các bạn xem qua mình đã làm thử
> #include<stdio.h>*
> *#include<conio.h>*
> *#include<math.h>*
> *void main()*
> { 
> int a,b,c; 
> float x, x1, x2, delta; 
> printf ("nhap a="); 
> ...


*bài này code khác gì bài mình đâu, bạn đã thử trường hợp a==0 chưa [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]
mất thời gian chép rồi :a:
*

----------


## chicilonmedia

mình test kỷ rồi, code này chạy tốt. Mình đang học mà

----------


## tctexpress

đúng là code ko có ji sai cả , bạn thử nhập a = 0 coi sao [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]

----------


## truong coi

> đúng là code ko có ji sai cả , bạn thử nhập a = 0 coi sao [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]


*ko sai vậy là bài ở trên mà tôi đã code trước là chính xác, thế các bạn làm gì phải mất công chép lại rồi test thử làm gì hihi [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]) vất vả cho các bạn rồi
p/s: bạn hells còn ý kiến gì thì tranh luận với conmaisitình đi kìa
*

----------


## innguyengia

> *#include<stdio.h>*
> *#include<conio.h>*
> *#include<math.h>*
> *main(){*
> *float a,b,c,delta;*
> *printf("
>  Nhap a:");scanf("%f",&a);*
> *printf("
>  Nhap b:");scanf("%f",&b);*
> ...


ý bạn nói code này đúng áh hả [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]
cái *if (del == 0)* ở chỗ nào ra thế ta :lick:
bạn thử chạy và nhập 1 , 2 , 3 xem sao , khi pt vô nghiệm thì code của bạn sẽ báo như thế nào ?
nhập a=0 mà vẫn báo là chương trình có 2 nghiệm lun mới ghê chứ

bạn chạy thử code của bạn và đoạn code này xem sao , mình sửa từ bài của bạn thôi , chỉnh lun phần nhập a lun gòi ấy 


```
#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
	float a,b,c,delta;
	do {
	printf("
 Nhap a:");
	scanf("%f",&a);
	} while (a == 0);
	printf("
 Nhap b:");
	scanf("%f",&b);
	printf("
 Nhap c:");
	scanf("%f",&c);
	delta=(b*b-4*a*c);
	if (delta < 0)
		printf("
 Ptrinh vo nghiem");
	else if(delta==0)
		printf("
 Ptrinh co nghiem kep X=%.2f",-b/2*a);
	else 
		printf("
 Ptrinh co 2 nghiem
 x1= %.2f 
 x2= %.2f",(-b+sqrt(delta))/2*a,(-b-sqrt(delta))/2*a);
	getch();
}
```

----------


## chungcuhanoi

> *mình nghĩ ko cần kiểm soát nhìu thế đâu bạn , chỉ cần khi nhập kiểm soát sao cho người nhập a!=0 ko la ok gòi , b và c==0 ko có ảnh hưởng kết quả đâu , a==0 thì nó bị lỗi chia cho 0 ở kết quả thui.
> mới học về cái này nên chưa bít nhìu , thanks bạn nhìu nhá ! :angel_not:
> *


*chính mồm bạn nói là kiểm soát sao cho người nhập nhập vào a!=0, bây giờ lòi đuôi ngu dốt ra rồi nhé :a: sao lại phải nhục đến nỗi đổi cả nick mới dám vào diễn đàn.:d*

----------


## linhpi24h

*haizzzzzzzzzzz , thiệt là nản ..............
nhà bạn có chương trình để chạy thử code ko thế , haizzzzzzzzzz...........
đoạn code này của mình :*


```
#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
    float a,b,c,delta;
    do {
    printf("
 Nhap a:");
    scanf("%f",&a);
    } while (a == 0);
    printf("
 Nhap b:");
    scanf("%f",&b);
    printf("
 Nhap c:");
    scanf("%f",&c);
    delta=(b*b-4*a*c);
    if (delta < 0)
        printf("
 Ptrinh vo nghiem");
    else if(delta==0)
        printf("
 Ptrinh co nghiem kep X=%.2f",-b/2*a);
    else 
        printf("
 Ptrinh co 2 nghiem
 x1= %.2f 
 x2= %.2f",(-b+sqrt(delta))/2*a,(-b-sqrt(delta))/2*a);
    getch();
}
```

*bạn nhập a==0 đc lun àh , Oh my good , ai đó có chương trình ji` chạy code đc test dùm em.
sẵn đó test hộ pro Un của chúng ta bài của pro lun nhé , chắc nhà pro ko có C-Free hay Borland C thì phải , nên chắc phải viết code = word gòi biên dịch = mắt hay chạy chương trình trên giấy ji` ấy :*



> Nguyên văn bởi *Un[iS]ex*  
> _#include<stdio.h>
> #include<conio.h>
> #include<math.h>
> main(){
> float a,b,c,delta;
> printf("
>  Nhap a:");scanf("%f",&a);
> printf("
> ...


*mong sẽ có người thứ 3 góp ý , 2 người chán chết* :wacko:

----------


## nguyenhungcase

*Chú ý: Tất cả các đoạn code nên đặt điều kiện cho a!=0 Tớ thấy rất nhìu bạn quên cái này, nhắc lại cũng ko thừa [IMG]data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAA  l21bKAAAAA1BMVEXh5PJm+yKVAAAAAXRSTlMAQObYZgAAAApJR  EFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=[/IMG]*​

----------


## thewitcher13

> *haizzzzzzzzzzz , thiệt là nản ..............
> nhà bạn có chương trình để chạy thử code ko thế , haizzzzzzzzzz...........
> đoạn code này của mình :*
> 
> 
> ```
> #include<stdio.h>
> #include<conio.h>
> #include<math.h>
> ...


*bạn Ngân Giang này, đã kém còn hay chê người,* *sau 1 thời gian dài, nhờ hells góp ý bạn mới thêm do...while vào đấy chứ, lúc đầu bạn bảo chỉ cần hạn chế sao cho người nhập không nhập a==0 là được, bạn cấm người dùng thế này thế nọ thì chó nó thuê bạn lập trình*
*chắc nhà pro ko có C-Free hay Borland C thì phải , nên chắc phải viết code = word gòi biên dịch = mắt hay chạy chương trình trên giấy ji` ấy--bạn nói câu này chứng tỏ bạn là 1 kẻ kiêu ngạo và khinh người, kiến thức đã bằng ai mà coi thường người khác quá vậy, bố mẹ bạn không dạy cho bạn cách ăn nói, phát ngôn à ?* *đừng tưởng đây là cái xóm nhà lá nhà bạn, muốn ăn tục nói phét hay làm gì cũng được đâu nha, bài code của bạn là cái quái gì mà tôi phải test, tôi không phải là người nhờ giúp.*

----------


## batbai

Bạn giải pt chưa đúng đâu nếu A=0 thì sẽ bao` lỗi ngay.

----------

