Hỏi về code phương trình bậc 2 bằng C

mn cho hỏi e sai chỗ nào


#include <stdio.h>
#include <math.h>
int main()
{
float a;
float b;
float c;
float d;
float x1;
float x2;


printf("nhap a:");
scanf("%f",&a);
printf("\nnhap b:");
scanf("%f",&b);
printf("\nnhap c:");
scanf("%f",&c);


d = b*b - 4*a*c;


if (d < 0)
{
printf("phuong trinh vo nghiem");
}
if ( d = 0 )
{
x1=-b/(2*a);
printf("Phuong trinh co nghiem kep:%f",x1);
}
if ( d > 0 )
{
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("\nPhuong trinh co 2 nghiem phan biet");
printf("\n%f",x1);
printf("\n%f",x2);
}
return 0;
}





mn cho hỏi e sai chỗ nào
 

Sửu Nguyễn

⭐️⭐️⭐️⭐️⭐️
Reply: hỏi về pt b2 bằng C

d=0 phải thành d==0
d=0 là phép gán còn d==0 mới là phép so sánh
 

Em yêu Vforum

Cần tìm anh trai nuôi :)
Bạn nên lồng lệnh if vào nhau để phần mềm được tối ưu hơn nhé.

Bài này vẫn còn sai mà. Trường hợp a = 0 thì sao?
Nó trở thành phương trình bậc nhất rồi bạn, đây mới là bài cơ bản để hiểu về các lệnh trong C, chứ không cần xét cụ thể mọi trường hợp như vậy.
 
Bạn nên lồng lệnh if vào nhau để phần mềm được tối ưu hơn nhé.


Nó trở thành phương trình bậc nhất rồi bạn, đây mới là bài cơ bản để hiểu về các lệnh trong C, chứ không cần xét cụ thể mọi trường hợp như vậy.

Ở đây k có đề bài nên em nhận xét thế cũng có gì sai đâu. Em k hiểu lệnh 'if' lồng nhau làm sao để "tối ưu" được. Nếu d < 0 thì làm sao d == 0 và d > 0 được.
 

Em yêu Vforum

Cần tìm anh trai nuôi :)
Ở đây k có đề bài nên em nhận xét thế cũng có gì sai đâu. Em k hiểu lệnh 'if' lồng nhau làm sao để "tối ưu" được. Nếu d < 0 thì làm sao d == 0 và d > 0 được.
ý mình là như này phải chạy cả 3 lần if, kết quả thì đúng thôi. Nhưng xét if d<0 nếu đúng thì vô nghiệm, còn lại (else) thì if d==0, còn lại mới xét d>0 thì hay hơn. Đúng bước nào thì nó dừng lại ở bước ấy luôn.
 

aloxinh_nb

It's Secret !
bạn có thể tham khảo code này. VIết kiểu như bạn vừa thiếu vừa không tối ưu được.

Mã:
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main()
{
    float a,b,c,delta,x1,x2;
    printf("Phuong trinh bac 2 co dang ax^2 + bx + c = 0. Nhap a :");
    scanf("%f",&a);
    printf("Nhap b :");
    scanf("%f",&b);
    printf("Nhap c :");
    scanf("%f",&c);
    if (a==0)
    {
        if (b==0)
        {
            if (c==0) printf("Phuong trinh vo so nghiem");
            else printf("Phuong trinh vo nghiem");
        }
        else
        {
            x1=-c/b;
            printf("Phuong trinh co 1 nghiem:%f",x1);
        }
    }
    else
    {
        delta=b*b-4*a*c ;
        if (delta<0) printf("Phuong trinh vo nghiem");
        if (delta==0)
        {
            x1=-b/(2*a);
            printf("Phuong trinh da nghiem kep:%f",x1);
        }
        if (delta>0)
        {
            x1=(-b+sqrt(delta))/(2*a);
            x2=(-b-sqrt(delta))/(2*a);
            printf("Phuong trinh co 2 nghiem phan biet");
            printf("%f",x1);
            printf("%f",x2);
        }
    }
}
 
Sửa lần cuối:
Các bạn cứ bảo tối ưu mãi. Chạy 1 lệnh với thêm 2 cái lệnh thì có gì khác nhau đâu. Chừng nào chạy 1 lệnh với N lệnh thì mới khác.
Mấy bạn cứ lo mấy cái chi tiết quá. Em thấy vài bài trong box chả thấy mấy bạn comment tối ưu. Ví dụ như thuật toán chạy N^2 với N nè.

aloxinh_nb: trường hợp a == 0 và b != 0, nghiệm là -c/b chứ.
 
Sửa lần cuối:

aloxinh_nb

It's Secret !
Các bạn cứ bảo tối ưu mãi. Chạy 1 lệnh với thêm 2 cái lệnh thì có gì khác nhau đâu. Chừng nào chạy 1 lệnh với N lệnh thì mới khác.
Mấy bạn cứ lo mấy cái chi tiết quá. Em thấy vài bài trong box chả thấy mấy bạn comment tối ưu. Ví dụ như thuật toán chạy N^2 với N nè.

aloxinh_nb: trường hợp a == 0 và b != 0, nghiệm là -c/b chứ.

Mình ghi nhầm thành -b/c.
Đúng là mấy bài nhỏ thế này, việc tối ưu ko phải là vấn đề quá lớn, nhưng nên tập dần thói quen v. Sau này lên cao hơn việc tối ưu hóa rất quan trọng nếu bạn làm ra một phần mềm, 1 chương trình nào đó. Nếu nó dùng quá nhiều tài nguyên để chạy thì ít được ưa chuộng hơn
 

Em yêu Vforum

Cần tìm anh trai nuôi :)
Mình ghi nhầm thành -b/c.
Đúng là mấy bài nhỏ thế này, việc tối ưu ko phải là vấn đề quá lớn, nhưng nên tập dần thói quen v. Sau này lên cao hơn việc tối ưu hóa rất quan trọng nếu bạn làm ra một phần mềm, 1 chương trình nào đó. Nếu nó dùng quá nhiều tài nguyên để chạy thì ít được ưa chuộng hơn
Tặng bác 100 like luôn :xucdong2:
 
Tối ưu là rất tốt, 1 bài toán phải tính hết trường hợp có thể xảy ra để tránh bug, ủng hộ aloxinh_nb, if lồng if (delta) bạn làm chưa hết

Mã:
#include <stdio.h>#include <conio.h>
#include <math.h>


void main()
{
    float a,b,c,delta,x1,x2;
	
    printf("Phuong trinh bac 2 co dang ax^2 + bx + c = 0. Nhap a :");
    scanf("%f",&a);
    printf("Nhap b :");
    scanf("%f",&b);
    printf("Nhap c :");
    scanf("%f",&c);
	
    if (a==0)
    {
        if (b==0)
        {
            if (c==0) printf("Phuong trinh vo so nghiem");
            else printf("Phuong trinh vo nghiem");
        }
        else
        {
            x1=-c/b;
            printf("Phuong trinh co 1 nghiem:%f",x1);
        }
    }
    else
    {
        delta=b*b-4*a*c ;
		
        if (delta<0) printf("Phuong trinh vo nghiem");
        {
            if (delta==0)
            {
                x1=-b/(2*a);
                printf("Phuong trinh da nghiem kep:%f",x1);
            }
            else
            {
                x1=(-b+sqrt(delta))/(2*a);
                x2=(-b-sqrt(delta))/(2*a);
                printf("Phuong trinh co 2 nghiem phan biet");
                printf("%f",x1);
                printf("%f",x2);
            }
        }
    }
}
 
Bài dễ và nhỏ như thế mà bu đông dữ. Với em, tối ưu là thuật toán. Còn những chi tiết nhỏ nhặt thì thầy em bảo sẽ có người làm thay. Cái chính là thuật toán. Mọi người thích tối ưu sao không ai vào bài viết này ủng hộ quan điểm của anh tengiday nhỉ và lựa 1 bài vô cùng đơn giản để "ra uy"?
Con gà ghét nhau vì tiếng gáy!!!
HTML:
https://vfo.vn/t/showthread.php?114045-so-sanh-du-lieu-giua-2-datagridview-va-them-vao-datagridview-moi-nhung-qua-cham
Đoạn code của bạn gunshot9x chỉ thêm dấu ngoặc -> tối ưu???:dmh:
 

tengiday

Happy life
Bài dễ và nhỏ như thế mà bu đông dữ. Với em, tối ưu là thuật toán. Còn những chi tiết nhỏ nhặt thì thầy em bảo sẽ có người làm thay. Cái chính là thuật toán. Mọi người thích tối ưu sao không ai vào bài viết này ủng hộ quan điểm của anh tengiday nhỉ và lựa 1 bài vô cùng đơn giản để "ra uy"?
Con gà ghét nhau vì tiếng gáy!!!
HTML:
https://vfo.vn/t/showthread.php?114045-so-sanh-du-lieu-giua-2-datagridview-va-them-vao-datagridview-moi-nhung-qua-cham
Đoạn code của bạn gunshot9x chỉ thêm dấu ngoặc -> tối ưu???:dmh:
Mình cám ơn bạn. Ai cũng có lý cả. Bạn cũng không nên quá quan tâm tới vấn đề này làm gì. Bạn cứ tập trung vào thuật toán là được.

Good luck.
 
Bài dễ và nhỏ như thế mà bu đông dữ. Với em, tối ưu là thuật toán. Còn những chi tiết nhỏ nhặt thì thầy em bảo sẽ có người làm thay. Cái chính là thuật toán. Mọi người thích tối ưu sao không ai vào bài viết này ủng hộ quan điểm của anh tengiday nhỉ và lựa 1 bài vô cùng đơn giản để "ra uy"?
Con gà ghét nhau vì tiếng gáy!!!
HTML:
https://vfo.vn/t/showthread.php?114045-so-sanh-du-lieu-giua-2-datagridview-va-them-vao-datagridview-moi-nhung-qua-cham
Đoạn code của bạn gunshot9x chỉ thêm dấu ngoặc -> tối ưu???:dmh:
Nếu đọc mà hiểu sai ý là do các bạn hiểu sai (tự đọc, tự hiểu)

Tối ưurất tốt, 1 bài toán phải tính hết trường hợp có thể xảy ra để tránh bug, ủng hộ aloxinh_nb, if lồng if (delta) bạn làm chưa hết

Cái trên chỉ bổ sung điều bạn aloxinh_nb thôi nha bạn (if lồng if giảm bớt công đoạn xét không cần thiết thay vì phải xét full trường hợp), bạn không để ý những điều nhỏ nhặt mà sao tối ưu được. Mình chẳng quan tâm mức phức tạp của thuật toán, cái đó do mấy người đi trước khái quát lại thành lưu đồ để dễ dàng phân tích, nói tên gọi thuật toán (nếu đã học qua) là biết sẽ biết ngay nó chạy ra sao, nguyên tắc chung chỉ cần tuân thủ: chia để trị, giảm công việc phải thực hiện,quản lý tài nguyên cấp phát chặt chẽ thì tự nhiên sẽ được tối ưu hay công việc đó còn gọi là xây dựng thuật toán (giải thuật)

Còn vấn đề bạn mắc phải là do thằng DataGridView khi datasource có dữ liệu lớn, khoảng 10.000 đến 100.000 dòng thì control này bắt đầu build chậm (mỗi đối tượng trong control .NET tối ưu trong một mức độ nhất định, chứ không phải là toàn năng)

Có 2 cách để giải quyết:

1. là chuyển sang dùng control khác chẳng hạn như ObjectListView

2. hướng dẫn của Microsoft giúp cải thiện hiệu suất khi dùng
dataGridView với Big Data

https://docs.microsoft.com/en-us/dotnet/framework/winforms/controls/performance-tuning-in-the-windows-forms-datagridview-control

Còn code so sánh do bạn duyệt toàn bộ dataGridView1 (n1) đem so sánh với dataGridView2 (n2) dẫn tới phải thực hiện n1*n2 công việc dù có tìm thấy hay không, tự nhiên lãng phí tài nguyên vì lệnh so sánh str(n)==str(m), dù tìm thấy rồi vẫn cứ thực hiện cho hết vòng lặp

Nhìn thuật toán bạn viết thì đề bài sẽ như sau:

Input: cho dataGridView1, dataGridView2
Output: Tìm dữ liệu cùng tồn tại trong cả 2 (dataGridView1, dataGridView2) lưu vào dataGridView3

xử lý đầu vào
dataGridView1, dataGridView2 loại bỏ dữ liệu trùng lặp nếu có tồn tại (có thể dùng Sort sắp xếp, so sánh dòng liền kề để xóa dữ liệu trùng)

tìm dữ liệu trùng
for
tìm n phần tử đầu dataGridView1 có chứa trong dataGridView2 có thể dùng IndexOf và chỉ cần xét vùng dữ liệu vừa lọc, giống thì add vào dataGridView3, rồi bỏ qua vòng đó, xét qua vòng mới luôn mà khỏi cần xét hết toàn bộ dữ liệu lọc (trong for chứa break để dừng vòng lặp đó, không cần thực hiện tiếp nữa, cấu trúc for(break/continue) cũng giống if(else) hay được dùng để tối ưu xử lý)
 
Sửa lần cuối:

Sút toàn trật

Ngoan nhất nhà
Mình cám ơn bạn. Ai cũng có lý cả. Bạn cũng không nên quá quan tâm tới vấn đề này làm gì. Bạn cứ tập trung vào thuật toán là được.

Good luck.
Mình không biết về lập trình, nhưng cách nói chuyện của bạn rất hay, không quá phô trương chỉ tập trung vào vấn đề, bạn nào cần hiểu hỏi thì giải thích 1 cách rất thân thiện làm cho người ta phục
Bài dễ và nhỏ như thế mà bu đông dữ. Với em, tối ưu là thuật toán. Còn những chi tiết nhỏ nhặt thì thầy em bảo sẽ có người làm thay. Cái chính là thuật toán. Mọi người thích tối ưu sao không ai vào bài viết này ủng hộ quan điểm của anh tengiday nhỉ và lựa 1 bài vô cùng đơn giản để "ra uy"?
Con gà ghét nhau vì tiếng gáy!!!
HTML:
https://vfo.vn/t/showthread.php?114045-so-sanh-du-lieu-giua-2-datagridview-va-them-vao-datagridview-moi-nhung-qua-cham
Đoạn code của bạn gunshot9x chỉ thêm dấu ngoặc -> tối ưu???:dmh:
mình cũng ủng hộ bạn
 
Cái trên chỉ bổ sung điều bạn aloxinh_nb thôi nha bạn (if lồng if giảm bớt công đoạn xét không cần thiết thay vì phải xét full trường hợp), bạn không để ý những điều nhỏ nhặt mà sao tối ưu được. Mình chẳng quan tâm mức phức tạp của thuật toán, cái đó do mấy người đi trước khái quát lại thành lưu đồ để dễ dàng phân tích, nói tên gọi thuật toán (nếu đã học qua) là biết sẽ biết ngay nó chạy ra sao, nguyên tắc chung chỉ cần tuân thủ: chia để trị, giảm công việc phải thực hiện,quản lý tài nguyên cấp phát chặt chẽ thì tự nhiên sẽ được tối ưu hay công việc đó còn gọi là xây dựng thuật toán (giải thuật)
Nói bao h cũng dễ hơn làm. Em k thích cái kiểu học một ít mà nghĩ mình gì cũng biết, nhất là thuật toán là một thứ có hẳn 1 ngành hẳn hoi. Nói như bạn thì chỉ cần biết +, -, *, / là tôi làm bài toán nào cũng được. Cách nói của bạn cái quan trọng là "làm thế nào" thì tịt, nói những cái ai cũng biết!!!
Nói nhiều vô ích, bạn giải cho em xem, dùng dòng in đậm tô đỏ của bạn để tối ưu nhé:
Mã:
8) Cho N điểm trên mặt phẳng Oxy. Em hãy lập trình đếm xem có bao nhiêu tam giác được tạo thành từ N điểm trên thỏa mãn các tính chất sau:
a) Là tam giác đều hoặc vuông, và
b) 3 đỉnh của tam giác không được thẳng hàng, và
c) Tâm của đường tròn ngoại tiếp qua 3 đỉnh của tam giác là gốc tọa độ O.

Dữ liệu vào: TAM_GIAC_IN.TXT
- Dòng đầu tiên chứa số nguyên N với 3 < N < 1000.
- N dòng tiếp theo, mỗi dòng chứa tọa độ của mỗi điểm theo kiểu tọa độ cầu (polar coordinate) có dạng:
R GOC
với R là khoảng cách từ gốc tọa độ O tới điểm đó và GOC là góc ở tâm O tính từ trục Ox (đơn vị là độ).
Biết rằng:
+ R là số nguyên với 0 < R < 10^5.
+ GOC là số nguyên với 0 <= GOC < 360.
+ N điểm đôi một khác nhau.

Dữ liệu ra: TAM_GIAC_OUT.TXT
1 số duy nhất là số lượng tam giác thỏa mãn 3 tính chất a, b, c như trên.

Ví dụ:
5
1 0
1 45
2 20
3 40
1 180

Kết quả là 1, được tạo thành từ (1, 0), (1, 45), và (1, 180).
Em cần code, k nói nữa. Cho em thêm vài lời giải thích rõ ràng. Như vậy mới biết đúng sai, nhanh chậm. Bạn làm tới tối thứ 5 7h nha! Bạn k cần đọc hay kiểm tra dữ liệu đâu, chỉ cần cho mấy cái hàm để gọi là đẹp.
 
Mình cám ơn bạn. Ai cũng có lý cả. Bạn cũng không nên quá quan tâm tới vấn đề này làm gì. Bạn cứ tập trung vào thuật toán là được.

Good luck.
Em cám ơn anh @tengiday nhiều lắm luôn. Một dòng comment mà thể hiện được rất rõ con người. Em rất hy vọng được gặp anh ở ngoài đời. Chỉ là em khá nóng tính. Mặc dù là nữ chứ. Em mà nhịn sẽ k yên được. Có lẽ tuổi trẻ anh ạ.

Mình không biết về lập trình, nhưng cách nói chuyện của bạn rất hay, không quá phô trương chỉ tập trung vào vấn đề, bạn nào cần hiểu hỏi thì giải thích 1 cách rất thân thiện làm cho người ta phục

mình cũng ủng hộ bạn
Em cám ơn anh nhiều nha! Em xem mấy bài trả lời cũng có cảm giác chèo thuyến trong bụng tể tướng vậy.
 
Nói bao h cũng dễ hơn làm. Em k thích cái kiểu học một ít mà nghĩ mình gì cũng biết, nhất là thuật toán là một thứ có hẳn 1 ngành hẳn hoi. Nói như bạn thì chỉ cần biết +, -, *, / là tôi làm bài toán nào cũng được. Cách nói của bạn cái quan trọng là "làm thế nào" thì tịt, nói những cái ai cũng biết!!!
Nói nhiều vô ích, bạn giải cho em xem, dùng dòng in đậm tô đỏ của bạn để tối ưu nhé:
Mã:
8) Cho N điểm trên mặt phẳng Oxy. Em hãy lập trình đếm xem có bao nhiêu tam giác được tạo thành từ N điểm trên thỏa mãn các tính chất sau:
a) Là tam giác đều hoặc vuông, và
b) 3 đỉnh của tam giác không được thẳng hàng, và
c) Tâm của đường tròn ngoại tiếp qua 3 đỉnh của tam giác là gốc tọa độ O.

Dữ liệu vào: TAM_GIAC_IN.TXT
- Dòng đầu tiên chứa số nguyên N với 3 < N < 1000.
- N dòng tiếp theo, mỗi dòng chứa tọa độ của mỗi điểm theo kiểu tọa độ cầu (polar coordinate) có dạng:
R GOC
với R là khoảng cách từ gốc tọa độ O tới điểm đó và GOC là góc ở tâm O tính từ trục Ox (đơn vị là độ).
Biết rằng:
+ R là số nguyên với 0 < R < 10^5.
+ GOC là số nguyên với 0 <= GOC < 360.
+ N điểm đôi một khác nhau.

Dữ liệu ra: TAM_GIAC_OUT.TXT
1 số duy nhất là số lượng tam giác thỏa mãn 3 tính chất a, b, c như trên.

Ví dụ:
5
1 0
1 45
2 20
3 40
1 180

Kết quả là 1, được tạo thành từ (1, 0), (1, 45), và (1, 180).
Em cần code, k nói nữa. Cho em thêm vài lời giải thích rõ ràng. Như vậy mới biết đúng sai, nhanh chậm. Bạn làm tới tối thứ 5 7h nha! Bạn k cần đọc hay kiểm tra dữ liệu đâu, chỉ cần cho mấy cái hàm để gọi là đẹp.
Có môn thuật toán riêng vì nó giúp bạn có một số thuật toán chuyên sâu cơ bản hay được dùng, để bạn có tiền đề cho việc xây dựng các thuật toán phức tạp sau này. Một người mà đi hỏi xin code thì sẽ tự biết ra sao rồi, lười suy nghĩ.

Ví dụ:
5
1 0
1 45
2 20
3 40
1 180

Kết quả là 1, được tạo thành từ (1, 0), (1, 45), và (1, 180).

Còn đầu bài là cho hệ tọa độ cực (r, PI) thay vì tọa độ đề các (x, y)

+ Là tam giác đều hoặc vuông
+ 3 đỉnh của tam giác không được thẳng hàng
+ Tâm của đường tròn ngoại tiếp qua 3 đỉnh của tam giác là gốc tọa độ O

=> tìm tập 3 điểm trong n điểm, có r bằng nhau và PI khác nhau và sao cho có ít nhất [hiệu 2 cặp PI] = 180 (vuông) hoặc [hiệu 2 cặp PI] chung cạnh = 120 (đều), lâu không học toán cao cấp nên quên các tính chất trong tọa độ cực rồi
 
Sửa lần cuối:

Thống kê

Chủ đề
100,626
Bài viết
467,368
Thành viên
339,821
Thành viên mới nhất
TrangDoji
Top