PDA

View Full Version : viết trương trình giải phương trình bậc 2 trên C



santana189
27-09-2007, 12:40
vụ này gay wa các bác ơi, bác nào biết về C thì giúp em viết chương trình giải phương trình bậc 2 nhé, em phần này lơ mơ wa' nên không làm được, 3 hôm nữa ông thầy giáo kiêm tra rồi, cố gắng nhé các bác, thank

alone_87
19-10-2007, 19:22
do mình đọc thông tin này quá muộn.nhưng nếu bạn muôn lần sau mình up lên cho.
thông cảm nha!!!!!

vns_dah_keke
19-10-2007, 23:35
bạn kiếm trên mạng thiếu gì, vào google gõ đúng từ khóa nó sẽ ra thoai . Còn kô thì mua 1 quyển dạy học C ấy , mấy bài PT bậc 2 là mấy bài căn bản mờ :|

GodHell
20-10-2007, 15:22
Giải phương trình bậc 2 mà không làm được thì đừng học nữa.

alone_87
20-10-2007, 20:05
mình viết bằng c++2005.net
chưa hoàn chỉnh lắm nhưng bạn có thể tham khảo
// giai.cpp : main project file.

#include "stdafx.h"

using namespace System;
double f,f1,s,a,x,b,e,c,d,a1,b1,x1,x2;
int k,i,j;

int main(array<System::String ^> ^args)
{
while (1)
{
Console::WriteLine("Nhap a de giai pt b2 \n b de giai pt bac nhat \n c de giai pt bac 3,\n va nhap 1 de thoat khoi chuong trinh");
double x1,x2,a,b,c,del;
char kt;
kt=Console::ReadKey(true).KeyChar;
switch (kt)
{
case 'a':
case 'A':
{
do
{
Console::Write("Nhap a khac 0 ");
a=Convert::ToInt32(Console::ReadLine());
if(a==0)
{
Console::WriteLine("Can Nhap a khac 0");
}
}while(a==0);
Console::Write(" Nhap b: ");
b=Convert::ToInt32(Console::ReadLine());
Console::Write(" Nhap c: ");
c=Convert::ToInt32(Console::ReadLine());
del=b*b-4*a*c;
if(del>0)
{
x1=(-b+Math::Sqrt(del))/2/a;
x2=(-b-Math::Sqrt(del))/2/a;
Console::WriteLine(" Gia tri x1= "+ x1);
Console::WriteLine(" Gia tri x2= "+ x2);

}
else if(del==0)
{
x1=-b/2/a;
Console::WriteLine("\n Nghiem kep x1=x2= "+ x1);
}
else
{
Console::WriteLine("\n Nghiem phuc x1= "+ (-b/2/a) + "+" + (Math::Sqrt(-del)/2/a) + "i");
Console::WriteLine("\n Nghiem phuc x2= "+ (-b/2/a) + "-" + (Math::Sqrt(-del)/2/a) + "i");
}
continue;
}
case 'b':
case 'B':
{
Console::WriteLine(" Giai PT bac nhat");
Console::Write(" Nhap a: ");
a=Convert::ToInt32(Console::ReadLine());
Console::Write(" Nhap b: ");
b=Convert::ToInt32(Console::ReadLine());
if(a==0)
{
if(b==0)
{
Console::WriteLine(" PT VO So Nghiem");
}
else
{
Console::WriteLine(" Pt Vo Nghiem");
}
}
else
{
Console::WriteLine(" PT co nghiem la x= "+ (-b/a));
}
continue;
}
case 'c':
case 'C':
{
array<float,1>^ g;
g=gcnew array<float,1>(30);
e=0.6;k=0;j=2;s=0;
Console::WriteLine("nhap phuong trinh bac 3 can giai");
do
{
Console::Write("nhap he so a: ");
a=Convert::ToDouble(Console::ReadLine());
} while (a==0);
Console::Write("nhap he so b: ");
b=Convert::ToDouble(Console::ReadLine());
Console::Write("nhap he so c: ");
c=Convert::ToDouble(Console::ReadLine());
Console::Write("nhap he so d: ");
d=Convert::ToDouble(Console::ReadLine());
Console::WriteLine("nhap khoang can tim nghiem [m,n]:");
Console::Write("nhap khoang m: ");
a1=Convert::ToDouble(Console::ReadLine());
Console::Write("nhap n: ");
b1=Convert::ToDouble(Console::ReadLine());
for(x=a1;x<=b1;x=x+0.0154)
{
f=a*x*x*x+b*x*x+c*x+d;
f1=Math::Abs(f);
if(f1<=e)
{
g[k]=x;
k++;
}
}

for(k=0;k<27;k++)
{
for(i=0;i<5;i++)
{
if((Math::Abs(g[k]-g[k+1]))<0.5)
{
g[k+1]=0;
}
}
} for(k=0;k<27;k++)
{
for(i=0;i<5;i++)
{
if((Math::Abs(g[k]-g[k+2]))<0.5)
{
g[k+2]=0;

}
}
}
Console::WriteLine("nghiem phuong trinh bac 3 ");
for(k=0;k<29;k++)
{
Console::Write("\t"+"\t"+g[k]);
}
continue;
}
case '1':
{
Console::WriteLine(" Thoat khoi ct");
break;
}
default :
continue;
}
break;
}
return 0;
}

viet_u7891
21-10-2007, 15:20
bài giải PT bậc 2 làm kiểu này thì pó tay. wa' dài và ko có kỹ thuật

viet_u7891
21-10-2007, 15:28
ủa giải 3 pt bậc 1,2,3 lun hả sỏy nha . Nhìn rối mắt wa1 ...hehe^^

UltraViolet
22-10-2007, 00:09
ẹc mới học lập trình ah,chắc lười đọc sách!!!

aptechite198x
22-10-2007, 00:32
Hic, quên sạch nó C rồi. Nhưng hồi đó em làm bài này chỉ có 15 phút, cả lên ý tưởng lẫn code (Lúc đó cũng là lính mới tò te). Sao bạn làm những 3 ngày cơ?
PS: Thuật toán bài này đơn giản mà. Bạn xem lại quy tắc giải phương trình bậc 2 trong toán ấy, tham số đầu vào là a, b, c. Xét các trường hợp a=0, a!=0, delta=0, delta>0; delta<0...(Đại khái thế:D).

zhongyuan
22-10-2007, 22:01
Mình có đọa code giải pt bật hai bang c++ hy vọng giúp ích được hco bạn:

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
void PTbachai(int a,int b,int c)
{
float delta,x1,x2;
delta=b*b-(4*a*c);
if(delta<0) printf("\n pt vo nghiem");
else
if(delta==0)
{
x=-b/2*a;
printf("\n pt co nghiem kep:x1=x2=%f",x);
}
else
{
x1=(-b+sqrt(delta))/2*a;
x2=(-b-sqrt(delta))/2*a;
printf("\n pt co hai nghiem fan biet:");
printf("\n x1=%f",x1);
printf("\n x2=%f",x2);

}

}
void main()
{
int a,b,c;
printf("\n nhap a,b,c:",%d,%d,%d);
PTbachai(a,b,c);
getch();
}

hieuxa
26-10-2007, 17:13
Mình có đọa code giải pt bật hai bang c++ hy vọng giúp ích được hco bạn:

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<math.h>
void PTbachai(int a,int b,int c)
{
float delta,x1,x2;
delta=b*b-(4*a*c);
if(delta<0) printf("\n pt vo nghiem");
else
if(delta==0)
{
x=-b/2*a;
printf("\n pt co nghiem kep:x1=x2=%f",x);
}
else
{
x1=(-b+sqrt(delta))/2*a;
x2=(-b-sqrt(delta))/2*a;
printf("\n pt co hai nghiem fan biet:");
printf("\n x1=%f",x1);
printf("\n x2=%f",x2);

}

}
void main()
{
int a,b,c;
printf("\n nhap a,b,c:",%d,%d,%d);
PTbachai(a,b,c);
getch();
}
Em cũng dốt đặc C/C++ nhưng mà cái bài giải PT bậc 2 em cũng vẫn có thể làm ngon. Chỉ cần nhớ lại các trường hợp xảy ra khi giải PTB2 thôi mà, còn về code thì toàn mấy câu lệnh sơ đẳng nhất. Có gì đâu.
À mà bác gì trên kia ơi, hình như là bác quên khai báo biến x thì phải, bác mới chỉ khai báo có mỗi x1,x2 thôi. Mà sao lại là "x=b/2*a", không đóng ngoặc rõ ràng thế thì là (b/2)*a rồi bác ạ.

hieuxa
26-10-2007, 17:50
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <math.h>
void main()
{
clrscr();
int a, b, c;
float x1,x2,delta;

cout<<" Giai phuong trinh bac hai."<<endl;
cout<<" Cho biet cac he so cua PT: "<<endl;
cout<<" a= "; cin>>a;
cout<<" b= "; cin>>b;
cout<<" c= "; cin>>c;

delta = b*b - 4*a*c;
if (delta<0) cout<<" Phuong trinh vo nghiem."<<endl;
else
if (delta == 0) cout<<" Phuong trinh co nghiem kep x1 = x2 = "<<-b/(2*a);
else
{
x1=(float)(-b-sqrt(delta))/(2*a);
x2=(float)(-b+sqrt(delta))/(2*a);
cout<<" Phuong trinh co hai nghiem phan biet:"<<endl;
cout<<" x1= "<<x1<<endl;
cout<<" x2= "<<x2;
}
getch();
}

edogawaconan
27-10-2007, 19:20
Giải phương trình bậc 2 mà không làm được thì đừng học nữa.

Bác giỏi quá ! Người ta ko biết thì hỏi sao lại nói như vậy ! Mấy bạn học rồi thì biét , các bạn có thái độ như vậy ai dám hỏi nửa , dốt thì mới đi học , không biết thì hỏi còn hơn nhiều người giấu dốt để rồi cả thế hệ đi xuống !

Mấy bạn toàn viết C++ trong khi bạn này hỏi C !
Đây là giải thuật :


-Nhập vào hệ số a , b , c
-Xét a:
+ a=0 thì x = -c/b;
+ a != 0 (khác 0) thì :
-Xét delta = b*-4*a*c;
+ Nếu delta <0 thì vô nghiệm;
+ Nếu delta =0 thì nghiệm x = -b/2*a;
+ Nếu delta >0 thì có 2 nghiệm x1= (-b+sqrt(delta))/2*a ;x2 = (-b-sqrt(delta))/2*a;


Nhìn giải thuật trên bạn tư viết ra code !

mwcic
08-10-2008, 23:19
dân mới vào nghề chưa biết hok có gì cả đâu. Thank các bạn nha

[=========> Bổ sung bài viết <=========]

bài cua ban zhongyuan có lỗi thì phải mình đưa vào máy đâu được bạn xem lại đi

[=========> Bổ sung bài viết <=========]

mình làm và thấy bạn
hieuxa có chỗ nè sai thì phải
if (delta<0) cout<<" Phuong trinh vo nghiem."<<endl;
else
if (delta == 0) cout<<" Phuong trinh co nghiem kep x1 = x2 = "<<-b/(2*a);
else
{

[=========> Bổ sung bài viết <=========]

trời ơi làm thử theo các bạn mà có đúng đâu, hok biết minhg có nhầm chỗ nào hok hay máy mình bị lỗi chú các bạn làm sai cả rùi hay sao thế. nhưng cũng cảm ơn vì pos bài lên nha

buidangmanh
12-10-2008, 22:50
thôi đây bài em là đúng nhất ! đang hoc C ma`
/* giai pt bac 2 */
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main ()
{
int a,b,c;
float x,x1,x2,x3,x4,delta;
printf("\n nhap a=");
scanf("%d",&a);
printf("\n nhap b=");
scanf("%d",&b);
printf("\n nhap c=");
scanf("%d",&c);
delta=(b*b)-(4*a*c);
x=x1=x2=(-b)/(2*a);
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
x3=-b/c;
x4=-b/a;
if(a==0)
{
if(b==0)
printf("\n pt vsn %f");
else
printf("\n pt co nghiem %f",x);
}
else
printf("\n pt co nghiem &4.2f",x4);
if(a!=0)
{
if(delta<0)
printf("\n pt vn");
else if(delta==0)
printf("\n pt co nghiem kep %4.2f",x);
else
printf("\n pt co 2 nghiem pb %4.2f,%4.2f",x1,x2);
}
getch();
}

itachisasuke
22-10-2008, 00:26
đoạn này sai : int a,b,c;
sửa lại : float a, b, c;
và %d sửa thành %f

Anh_tn
23-10-2008, 12:34
Giải phương trình bậc 2 mà không làm được thì đừng học nữa.

Cai bac nay hay thiet! Nguoi ta moi hoc thi lam sao biet duoc! Ma noi nguoi ta nhu vay? Ai cung co luc nhu vay ma! Khong phai tu nhien nguoi ra lai tham gia vao dien dan de thao luan?Co le la vi mot ly do nao do ma khong lam duoc ?
Vay khong nen noi nguoi ta nhu vay nua nhe!
Rui mai mot bac vao dien dan nay muon hoi gi thi ai ma muon giup bac nua ha?

Mater619
27-10-2008, 20:23
Của mình đây, dễ hiểu và 100% đúng (test gần nửa tiếng)

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

int a, b, c;
double del, x, x1, x2, delta;

void main()
{

printf("Day la chuong trinh giai pt bac 2 ax2 + bx + c = 0.\n");
printf("Nhap vao ba he so a,b,c cach nhau bang khoang trang (space): ");
scanf("%d%d%d", &a, &b, &c);

if (a == 0)
{if (b == 0)
{if (c == 0)
printf("Phuong trinh vo so nghiem.\n");
else
printf("Phuong trinh vo nghiem.\n");
}
else
x = -c/b;
printf("Nghiem cua phuong trinh la: x = %0.2f. \n", x);
}
else
{
delta = b*b - 4*(a*c);
del = sqrt (delta);
x = -b / (2*a);
x1 = ((-b - del) / 2*a);
x2 = ((b - del) / 2*a);
if (delta < 0)
printf("Phuong trinh vo nghiem.\n");
else
if (delta == 0)
printf("Phuong trinh co nghiem kep x = %0.2f.\n", x);
else
printf("Phuong trinh co 2 nghiem phan biet: x1 = %0.2f, x2 = %0.2f \n", x1, x2);
getch();
}
}

songthan08t4
30-10-2008, 21:52
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{ float a,b,c,x,x1,x2,delta,k,h;
printf(" nhap a,b,c=");
scanf("%f%f%f",&a,&b,&c);
if(a==0)
{ if(b!=0)
{ x=-c/b;
printf("\n x=%.2f",x);
}
else if(c!=0) printf("\n phuong trinh vo nghiem");
else printf("\n phuong trinh co vo so nghiem");
}
else
{ delta=b*b-4*a*c;
if(delta>0)
{ x1=-b+sqrt(delta)/2*a;
printf("\n x1=%.2f",x1);
x2=-b-sqrt(delta)/2*a;
printf("\n x2=%.2f",x2);
}
else if(delta==0)
{ x=-b/2*a;
printf("\n x=%.2f",x);
}
else
{ k=-b/2*a;
h=sqrt(-delta)/2*a;
printf("\n x1=%.2f + i%.2f",k,fabs(h));
printf("\n x2=%.2f - i%.2f",k,fabs(h));
}
}
getch();
}

xelnaga
31-10-2008, 11:54
T_T. Sao ko bác nào để trong thẻ [code] vậy. Nhìn cái đống mã C mà nản luôn :(

tranmauhanh
31-10-2008, 12:17
Bài toán này quá đơn giản, HS lớp 8-9 dư sức làm được.Khong hiểu bạn nâu đề toán này học lớp mấy nữa.Chán!

kool_boy
01-11-2008, 13:50
nhìn giải kiểu này chắc chết quá ! mình cũng mới học mà dùng if cũng đủ để làm đc bài này mà đâu cần dài thế này!híc

songthan08t4
02-11-2008, 10:32
ai có cách ngắn hơn làm thử coi .đừng nói ko thế

longgiathanh
08-11-2008, 10:27
hix bac buidangmanh cung sai rùi.nhung bài này thì vẫn chạy dược.bác tính x1,x2 mà ko xét diều kiện ah.rui chia cho 0 thì sao.và delta chắc gì > 0.
bác nên tính ngiiem trong diều kien của nó và xuât luôn.bài cua bác buidangmanh sửa thành vậy chắc là dược.

ez125
16-11-2008, 15:03
bài này cũng chưa chính xác. xin chia buồn

tatthangnb
17-11-2008, 02:37
delta=(b*b)-(4*a*c);
x=x1=x2=(-b)/(2*a);
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
x3=-b/c;
x4=-b/a;
Theo mình đoạn này sai roài dẫn đến cả bài này đều sai.Ko tin bạn test thử mà coi.CÁc phép toán này phải gắn vao trong các câu lệnh thích hợp thì mới run được.
Vi Dụ như: bạn nhập các giá trị của a,b,c thì trương trình sẽ thực hiện lần lượt các phép toán ở trên sau đó mới thực hiện điều kiên trong các câu lệnh ở phía dưới.Như thế là sai.Dáng ra là phải thực hiện lệnh kiểm tra trước sau đó mới thực hiện phép tính:D
---các bạn thử test bài nay xem thế nào nhé-----
#include <stdio.h>
#include <math.h>

void main()
{
float a, b, c, delta;

printf("\nGiai phuong trinh bac hai AXý + BX + C = 0");
printf("\nCho biet ba he so A B C : ");
scanf("%f%f%f", &a, &b, &c);

delta = b * b - 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 hai nghiem phan biet\nx1 = %f", (-b + sqrt(delta))/(2*a));
printf("\nx2 = %f", (-b - sqrt(delta))/(2*a));
}
getch();
}

tanmeo
18-11-2008, 19:08
theo minh chỉ cần x1,x2 thui

langquang
21-11-2008, 14:52
cai nay dung nhat gooood

JaUnTy
21-11-2008, 15:39
vụ này gay wa các bác ơi, bác nào biết về C thì giúp em viết chương trình giải phương trình bậc 2 nhé, em phần này lơ mơ wa' nên không làm được, 3 hôm nữa ông thầy giáo kiêm tra rồi, cố gắng nhé các bác, thank
Viết code hello worl cho mình với

TranXuanHai
22-11-2008, 00:36
sory nha the bai cua ong co xet toi truong hop a=0;b=0;c=0 chua vay????? <SAO NO^?? QUA VAY>

lamchihung89
22-11-2008, 03:25
sau đây là lời giải của mình không biết có đúng không nữa mong mọi người chỉ giáo
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
float a,b,c,delta,x1,x2;
printf("\na=");scanf("\n%f",&a);
printf("\nb=");scanf("\n%f",&b);
printf("\nc=");scanf("\n%f",&c);
if(a==0)
if(b==0)
{
if(c==0)
printf("\nphuong trinh co vo so nghiem");
else
printf("\nphuong trinh da cho vo nghiem");
} else
printf("\nphuong trinh co 1 nghiem x=%f",-c/b);
} else
delta=b*b-4*a*c;
if(delta==0) printf("\nphuong trinh co nghiem kep x1=x2=%f",-b/(2*a));
else if(delta<0) printf("\nphuong trinh da cho vo nghiem");
else if(delta>0) printf("\nphuong trinh co 2 nghiem phan biet x1=%f\nx2=%f",(-b+sqrt(delta))/(2*a),(-b-sqrt(delta))/(2*a));
getch();
}

buidangmanh
22-11-2008, 18:03
Bài của BÁc LAMCHIHUNG89 mình vùa đọc qua chắc đúng rồi nhưng để đạt được sự chính xác trong đáp số thì còn thiếu đổi cho PRINTF (%f=%4.2f).là OK

[=========> Bổ sung bài viết <=========]

ĐÓng của TOPIC này thôi nhạt quá

quachbede
22-11-2008, 18:59
bạn mới học c nên bạn chưa lam ưen đươc đó
bạn nên ra tiệm sách cũ mua cuốn sach lập trình ngôn ngữ c từ a tới z mà học bồ ich lăm đó
hay là bạn liên hệ với mình đi mình có nè
email nhá?!!!
anhhunggiay@yahoo.com hehe
chúc bạn cuối tuần vui vẻ

jinshi
22-11-2008, 19:30
mình là ngườj mơj.rất ẹ về tin học,lại dang hoc ve viúal basic..k bit mot tj j het..mong cac ban giup do .co aj jup mjnh viet chuong trinh ve elip bang vb voj.thank nhiu

dongroco7235
22-11-2008, 22:26
#include<conio.h>
#include<iostream.h>
#include<math.h>
void main()
{
int a,b,c,x,x1,x2,delta;
cout<<"nhap a="; cin>>a;
cout<<"nhap b="; cin>>b;
cout<<"nhap c="; cin>>c;
{
if (a==0)
cout<<"nghiem la x="<<float(-c/b);
else
{ if(a!=0)
delta=b*b-(4*a*c);
if (delta<0)
cout<<"vo nghiem";
else
if (delta==0)
cout<<"nghem kep x1=x2="<<float(-b/(2*a))<<endl;
else
{ if(delta>o)
cout<<"pt co 2 nghiem phan bit x1 va x2"<<endl;
cout<<"x1="<<float((-b+sqrt(delta))/(2*a))<<endl;
cout<<"x2="<<float((-b-sqrt(delta))/(2*a))<<endl;
}}
getch();
}
do minh chi bit lam tren C++ thoi con tren C thi "bo chim"
ma chac gio moi gui thi khong can dau ha? tai gio minh moi doc duoc.
ma tien cho hoi cau nay nha: nhap vao so N, cho N chay tu 2 den N. kiem tra xem N co phai la so chinh phuong khong?. bua moi kiem tra cau nay ma khong lam duoc va thay cung chua chi cach lam. mong ban nao doc thi chi dum chut nha. co gi gui qua mail cho minh nha: nguyen_van_dong_0278@yahoo.com cam on nhiu nhiu nha!!!!!!!

buidangmanh
23-11-2008, 00:34
mình là ngườj mơj.rất ẹ về tin học,lại dang hoc ve viúal basic..k bit mot tj j het..mong cac ban giup do .co aj jup mjnh viet chuong trinh ve elip bang vb voj.thank nhiu
CHUONG trinh ELIP la` C Trinh` di`( ti'nh ve` jjj ).

levicntt
23-11-2008, 10:47
/* Bai tap 4_1 - Giai phuong trinh bac hai AXý + BX + C = 0 */
#include <stdio.h>
#include <math.h>

void main()
{
float a, b, c, delta;

printf("\nGiai phuong trinh bac hai AXý + BX + C = 0");
printf("\nCho biet ba he so A B C : ");
scanf("%f%f%f", &a, &b, &c);

delta = b * b - 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 hai nghiem phan biet\nx1 = %f", (-b + sqrt(delta))/(2*a));
printf("\nx2 = %f", (-b - sqrt(delta))/(2*a));
}
getch();
}

TranXuanHai
24-11-2008, 18:06
Viet chuong trinh nhap vao N so va tim ra so lon nhat trong N so do''''''''
Em lam may ngay ma ko co dc.cac Bac trinh bay don gian thui nha em moi hoc C.thank truoc

nguchet
24-11-2008, 19:25
topic "viết trương trình giải phương trình bậc 2 trên C", 37 posts, 3377 views, nice :D

dongroco7235
25-11-2008, 16:40
ũa làm trên c hả? vậy chịu

trunghieu2806
25-11-2008, 22:25
Bác giỏi quá ! Người ta ko biết thì hỏi sao lại nói như vậy ! Mấy bạn học rồi thì biét , các bạn có thái độ như vậy ai dám hỏi nửa , dốt thì mới đi học , không biết thì hỏi còn hơn nhiều người giấu dốt để rồi cả thế hệ đi xuống !

Mấy bạn toàn viết C++ trong khi bạn này hỏi C !
Đây là giải thuật :


-Nhập vào hệ số a , b , c
-Xét a:
+ a=0 thì x = -c/b;
+ a != 0 (khác 0) thì :
-Xét delta = b*-4*a*c;
+ Nếu delta <0 thì vô nghiệm;
+ Nếu delta =0 thì nghiệm x = -b/2*a;
+ Nếu delta >0 thì có 2 nghiệm x1= (-b+sqrt(delta))/2*a ;x2 = (-b-sqrt(delta))/2*a;


Nhìn giải thuật trên bạn tư viết ra code !

Xin lỗi giải thuật có vấn đề, nếu giả sủ­ a = 0, b = 0 mà c # 0 thì sao => pt vô No, giả thuật này ko bàn đến vấn đề đó à, xin bổ sung thêm trường hợp a = 0:
a = 0
Neu b = 0
Neu c = 0 => pt co vo so nghiem
Neu c # 0 => pt vo nghim
Neu b # 0 => pt co nghiem x = -b/a

tomato123
11-04-2009, 12:12
Minh cung xin gop 1 doan code moi nguoi xem thu~ du thieu nhu the nao nha
#include<iostream.h>
#include<conio.h>
#include<math.h>
void main()
{
float a,b,c,d=0;
cout<<"Nhap gia tri a: "; cin>>a;
cout<<"Nhap gia tri b: "; cin>>b;
cout<<"Nhap gia tri c: "; cin>>c;
if (a==0 && b==0 && c==0)
cout<<"Phuong trinh co vo so nghiem";
else
if (a==0 && b==0 &&c!=0)
cout<<"Phuong trinh vo nghiem";
else
if (a==0 && b!=0 && c!=0)
cout<<"Phuong trinh co 1 nghiem x= "<<(-c/b);
else
if (a!=0 && b!=0 && c!=0)
{ d=b*b-4*a*c;
if (d==0)
cout<<"Phuong trinh co 1 nghiep kep"<<-b/(2*a);
if (d<0)
cout<<"Phuong trinh vo nghiem";
if (d>0)
cout<<"Phuong trinh co 2 nghiem phan biet: \n"
"X1= "<<(-b-sqrt(d))/(2*a)<< "\nX2= "<<(-b+sqrt(d))/(2*a);
}
getche();
}

ly_sv
11-04-2009, 20:01
ban chay thu bai cua minh nha

[=========> Bổ sung bài viết <=========]

#include <iostream.h>
#include <conio.h>
#include <math.h>
void main()
{
int a,b,c;
cout<<"nhap vao so a =";cin>>a;
cout<<"nhap vao so b =";cin>>b;
cout<<"nhap vao so c =";cin>>c;
if(a==0)
{
if(b!=0)
cout<<"phuong trinh co mot nghiem:"<<(-c/b)<<endl;
else
{
if(c==0)
cout<<"phuong trinh co vo so nghiem"<<endl;
else
cout<<"phuong trinh vo nghiem"<<endl;
}
}
else
{
int d=(b*b)-4*(a*c);
cout<<"denta="<<d<<endl;
if(d==0)
cout<<"phuong trinh co nghiem kep:"<<((-b)/(2*a))<<endl;
else
{
if(d>0)
{
cout<<"phuong trinh co hai nghiem fan biet:"<<endl;
cout<<"x1="<<(-b+sqrt(d))/(2*a)<<endl;
cout<<"x2="<<(-b-sqrt(d))/(2*a)<<endl;
}
else
{
cout<<"phuong trinh vo nghiem";
}
}
}
getch();
}

manhlaosu
22-05-2009, 00:31
//ax^2+bx+c=0
#include<stdio.h>
#include<conio.h>
#include<math.h>
#define D b*b-4*a*c
void main()
{
clrscr();
float a,b,c,x1,x2,x;
printf("nhap vao a:");
scanf("%f",&a);
printf("nhap vao b:");
scanf("%f",&b);
printf("nhap vao c:");
scanf("%f",&c);
if(a==0)
{
if(b==0)

if(c==0)
printf("co vo so nghiem");
else printf("he vo nghiem");





else printf("pt co 1 nghiem x =%2f:\n",(float)(-c/b));


}
else if(a!=0)
{


if(D<0)
printf("phuong trinh vo nghiem");
else if(D==0)
printf("phuong trinh co nghiem kep x1=x2=%f",(float)-b/(2*a));

else printf("phuong trinh co hai nghiem phan biet x1=%2f,x2=%2f",(float)(-b-sqrt(D))/(2*a),(float)(-b+sqrt(D))/(2*a));
}
getch();
}

maicodon186
14-08-2009, 22:44
cai nay de hiu va co ghi chu giup cac pac moi hoc c de hiu ne.
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{

float a,b,c,d;
clrscr();
printf("Nhap a: ");
scanf("%f",&a);
printf("Nhap b: ");
scanf("%f",&b);
printf("Nhap c: ");
scanf("%f",&c);
d=b*b-4*a*c;

if(a==0) // dk 1
{
if(b==0 )
if(c==0)
// neu lam if(b==0 && c==0) se xuat C_1 va C_2, du nghiem van dung!
{
printf(" phuong trinh co VSN ");
}
else // tuc c!=0
{
printf(" phuong trinh VN "); // C_1
}
if(b!=0 && c!=0)

{
printf(" phuong trinh co nghiem la x=%f",-c/b ); //C_2
}
}
else // dk 2
{
//printf("Phuong trinh co 1 nghiem: x= %f",-c/b);
if(d<0)
printf("Phuong trinh vo nghiem");
if(d==0)
printf("Phuong trinh co nghiem kep: x1 = x2 = %f",-b/(2*a));
if(d>0)
printf("Phuong trinh co 2 nghiem: x1 = %f, x2 = %f",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));

}
getch();
}

quangtq
15-08-2009, 08:45
Viet chuong trinh nhap vao N so va tim ra so lon nhat trong N so do''''''''
Em lam may ngay ma ko co dc.cac Bac trinh bay don gian thui nha em moi hoc C.thank truoc
1. Viết tiếng Việt có dấu. Đọc đau mắt quá.
2. Code của bạn đây


#include <stdio.h>
#include <conio.h>
int max(int a[], int n)
{
int m = a[0];
for (int i=1; i<n; i++) if (m<a[i]) m = a[i];
return (m);
}

int main()
{
clrscr();
int n, a[100];
printf(" N = "); scanf("%d",&n);
for (int i=0; i<n; i++)
{ printf("a[%d] = ",i); scanf("%d",&a[i]); }
printf(" Max cua day so la : %d",max(a,n));
getch();
return 0;
}

723774
26-09-2009, 23:02
Nhìn rối mắt quá: code Phương trình bậc 2 của tớ nè:
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
float a,b,c,delta;
float x,x1,x2;
printf(" Moi ban nhap a,b,c");
scanf("%f%f%f",&a,&b,&c);
if(a==0)
if(b==0)
if(c==0) printf("PTVSN");
else
printf("PTVN");
else
printf(" PT co nghiem x=%2f",-c/a);
else
{
delta= b*b-4*a*c;
if(delta>0)
printf("Phuong trinh co 2 nghiem phan biet: x1=%2f,x2=%2f",(-b+sqrt(delta))/2*a,(-b-sqrt(delta))/2*a);
if(delta<0)
printf(" PTVN");
if(delta==0)
printf(" PT co nghiem kep:x=%2f",-b/2*a);
}
getch();
}

kangoo1707
27-09-2009, 01:30
Nhìn rối mắt quá: code Phương trình bậc 2 của tớ nè:
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
float a,b,c,delta;
float x,x1,x2;
printf(" Moi ban nhap a,b,c");
scanf("%f%f%f",&a,&b,&c);
if(a==0)
if(b==0)
if(c==0) printf("PTVSN");
else
printf("PTVN");
else
printf(" PT co nghiem x=%2f",-c/a);
else
{
delta= b*b-4*a*c;
if(delta>0)
printf("Phuong trinh co 2 nghiem phan biet: x1=%2f,x2=%2f",(-b+sqrt(delta))/2*a,(-b-sqrt(delta))/2*a);
if(delta<0)
printf(" PTVN");
if(delta==0)
printf(" PT co nghiem kep:x=%2f",-b/2*a);
}
getch();
}

Cái này nhìn cũng rối mắt thấy mịe

hanhtinhduchoa
02-10-2009, 20:04
co ai co cach giaicac bai tap can bac 3 tro len khong?
chi minh voi. minh moi hoc khong biet duoc thanks!

thanhld1590
03-10-2009, 02:38
Đây là bài của mình mọi người tham khảo nha

// Giai pt bac 2
#include<iostream.h>
#include<math.h>
#include<conio.h>
using namespace std;
int main()
{
float a,b,c,delta;
cout<<"Hay nhap cac he so cua pt ma ban mun giai vao:\n";
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"c=";cin>>c;
if(a==0) {
cout<<"Hic day dau phai pt bac 2 ha ban nhap lai dum tui";
}
else {
delta=b*b-4*a*c;
if(delta<0)
cout<<"Phuong trinh vo nghiem";
else if(delta==0) {
cout<<"Phuong trinh co nghiem kep:\n";
cout<<"X1=X2="<<(-b)/(2*a);
}
else {
cout<<"Phuong trinh co 2 nghiem phan biet:\n";
cout<<"X1="<<((-b)+sqrt(delta))/(2*a)<<"\n";
cout<<"X2="<<((-b)-sqrt(delta))/(2*a);
}
}
getch();
return 0;
}

jion666
03-10-2009, 14:00
Em thấy mấy bác làm thiếu điều kiện
Ví dụ như a=0, b=0 thì sao
Em thữ post bài em lên thữ nhé


#include<iostream>
#include<math.h>
#include<conio.h>
#include<string.h>
using namespace std;
int main()
{
double a, b, c, delta, x,x1,x2;
cout<<"---------Giai PT bac 2--------\n";
cout<<"Nhap a =";
cin>>a;
cout<<"Nhap b =";
cin>>b;
cout<<"Nhap c =";
cin>>c;

if(a!=0)
{
delta=b*b-4*a*c;
if(delta>0)
{

x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
cout<<"Phuong trinh co 2 nghiem phan biet\n\n";
cout<<"Nghiem x1 = "<<x1;
cout<<"\n";
cout<<"Nghiem x2 = "<<x2;
}
else
if(delta<0)
{
cout<<"Phuong trinh vo nghiem!!!";
}
else

{
x=-b/(2*a);
cout<<"Phuong trinh co nghiem kep la: x = "<<x;
}


}
else
if(b!=0)
{
x=-c/b;
cout<<"Nghiem cua phuong trinh la: x = "<<x;
}
else
if(c!=0)
{
cout<<"Phuong trinh vo nghiem!!!!";
}
else
cout<<"Phuong trinh co vo so nghiem!";



_getch();
return 0;


}

thanhld1590
03-10-2009, 16:32
Em thấy mấy bác làm thiếu điều kiện
Ví dụ như a=0, b=0 thì sao
Em thữ post bài em lên thữ nha

}

Bạn ơi trường hợp a=0 mình đã xét rồi còn trường hợp b=0 chỉ là trường hợp đặc biệt của pt bậc 2 thôi ko cần xét riêng đâu bạn ah.Giả sử pt x2-4=0 nhé nó có dental =16 và vẫn có 2 nghiệm bình thường theo trường hợp dental >0 vì thế nên trường hợp b=0 là thừa bạn ah.

dinhthanhnl
23-10-2009, 15:31
cach gai cua ban ma thay minh cung pó tay nen minh xin

ha dai
25-10-2009, 18:19
bó tay ông tự đọc đi nản ông quá

jion666
26-10-2009, 18:26
Bạn ơi trường hợp a=0 mình đã xét rồi còn trường hợp b=0 chỉ là trường hợp đặc biệt của pt bậc 2 thôi ko cần xét riêng đâu bạn ah.Giả sử pt x2-4=0 nhé nó có dental =16 và vẫn có 2 nghiệm bình thường theo trường hợp dental >0 vì thế nên trường hợp b=0 là thừa bạn ah.
Em củng không rỏ nữa.
Em chỉ xét tất cã thế thôi. Thế làm như em là thừa nhưng có sai không anh

buidangmanh
27-10-2009, 16:13
chả có ai học LT mà chưa làm BT GPT bậc 2!! :))

cobexauxi2811
04-02-2010, 15:12
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
float a,b,c,delta;
printf(" nhap vao he so a,b,c:");
sacnf("%f%f%f",&a,&b,&c);
if(a==0)
printf("phuong trinh tro thanh phuong trinh bac nhat");
else {
delta = b*b-4*a*c;
if(delta<0) printf("phuong trinh vo nghiem");
else(delta==0)
printf("phuong trinh co nghiem kep x1=x2=%.2f,-b/(2*a));
else{
float x1=(-b+sqrt(delta))/(2*a);
float x2=(-b-sqrt(delra))/(2*a);
printf(" phuong trinh co hai nghiem phan biet x1=%.2f x2=%.2f",x1,x2);
}
}
getch();
}

[=========> Bổ sung bài viết <=========]

#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
float a,b,c,delta;
printf(" nhap vao he so a,b,c:");
scanf("%f%f%f",&a,&b,&c);
if(a==0)
printf("phuong trinh tro thanh phuong trinh bac nhat");
else {
delta = b*b-4*a*c;
if(delta<0) printf("phuong trinh vo nghiem");
else(delta==0)
printf("phuong trinh co nghiem kep x1=x2=%.2f,-b/(2*a));
else{
float x1=(-b+sqrt(delta))/(2*a);
float x2=(-b-sqrt(delta))/(2*a);
printf(" phuong trinh co hai nghiem phan biet x1=%.2f x2=%.2f",x1,x2);
}
}
getch();
}

[=========> Bổ sung bài viết <=========]

#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
float a,b,c,delta;
printf(" nhap vao he so a,b,c:");
scanf("%f%f%f",&a,&b,&c);
if(a==0)
printf("phuong trinh tro thanh phuong trinh bac nhat");
else {
delta = b*b-4*a*c;
if(delta<0) printf("phuong trinh vo nghiem");
else(delta==0)
printf("phuong trinh co nghiem kep x1=x2=%.2f,-b/(2*a));
else{
float x1=(-b+sqrt(delta))/(2*a);
float x2=(-b-sqrt(delta))/(2*a);
printf(" phuong trinh co hai nghiem phan biet x1=%.2f x2=%.2f",x1,x2);
}
}
getch();
}

chicken263
21-02-2010, 16:10
#include <stdio.h>
#include <conio.h>
#include <math.h>

void main ()
{
float a,b,c;
float delta,x,x1,x2;

printf("Ban hay nhap vao so a : ");
scanf("%f",&a);
printf("\nBan hay nhap vao so b : ");
scanf("%f",&b);
printf("\nBan hay nhap vao so c : ");
scanf("%f",&c);


if(a==0)
{
if(b==0 && c==0)

printf("\nPhuong trinh vo so nghiem !");

if(b==0 && c!=0)

printf("\nPhuong trinh vo nghiem !");

else
{
x=-b/c;
printf("\nPhuong trinh co nghiem duy nhat x = %.2f",x);
}

}

if(a!=0)
{

delta=b*b-(4*a*c);
printf("\nDelta is %.2f",delta);

if(delta>0)
{
sqrt(delta);
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
printf("\nPhuong trinh co 2 nghiem phan biet x1 = %.2f va x2 = %.2f",x1,x2);
}
if(delta==0)
{
x1=((float)-b/(2*a));
printf("\nPhuong trinh co nghiem kep x1 =x2 = %.2f",x1);
}
else if(delta <0)
printf("\nPhuong trinh vo nghiem !");
}
}

lydanghainghia
03-03-2010, 16:36
khi mình viết sqrt toàn báo lỗi. làm thế nào đây?

dpcntt
03-04-2010, 18:02
em cũng lơ mơ về c,theo em mấu chốt bài toán là nằm ở cấu trúc lệnh if(chứ còn thuật toán thì chắc đa số mọi người dều biết),vì bài này có nhiều trường hợp if lồng vào nhau,các bác nào pro có lời giải nào thật sự chính xác để các đệ tử mới học như em có thê hiểu hơn về cái cấu trúc if,thanks

duc_hero
21-09-2010, 01:14
#include <stdio.h>
#include <math.h>
#include <conio.h>
void main()
{
float a, b ,c ,delta;
printf("\n giai phuong trinh bac 2: ax*x+bx+c=0");
printf("\n Nhap vao so a :");
scanf("%f",&a);
printf("\n Nhap vao so b:");
scanf("%f",&b);
printf("\n Nhap vao so c:");
scanf("%f",&c);

delta = b*b-4*a*c;
textcolor(13);
if(a==0)
cprintf("\n o phai phuong trinh bac 2");
if(delta < 0)
cprintf("\n phuong trinh vo nghiem");
else if(delta == 0)
cprintf("phuong trinh co nghiem kep: x1=x2=%f",-b/(2*a));
else if(delta > 0 && a>0)
{
cprintf(" phuong trinh co 2 nghiem phan biet:\nx1=%f",-b-sqrt(delta)/2*a);
cprintf("\nx2=%f",-b+sqrt(delta)/2*a);
}
getch();
}

[=========> Bổ sung bài viết <=========]

[QUOTE=duc_hero;2291567]
#include <stdio.h>
#include <math.h>
#include <conio.h>
void main()
{
float a, b ,c ,delta;
printf("\n giai phuong trinh bac 2: ax*x+bx+c=0");
printf("\n Nhap vao so a :");
scanf("%f",&a);
printf("\n Nhap vao so b:");
scanf("%f",&b);
printf("\n Nhap vao so c:");
scanf("%f",&c);

delta = b*b-4*a*c;
textcolor(13);
if(a==0)
cprintf("\n o phai phuong trinh bac 2");
if(delta < 0)
cprintf("\n phuong trinh vo nghiem");
else if(delta == 0)
cprintf("phuong trinh co nghiem kep: x1=x2=%f",-b/(2*a));
else if(delta > 0 && a>0)
{
cprintf(" phuong trinh co 2 nghiem phan biet:\nx1=%f",-b-sqrt(delta)/2*a);
cprintf("\nx2=%f",-b+sqrt(delta)/2*a);
}
getch();
}

megaownage
29-11-2012, 22:21
Theo hướng đối tượng thì đây là 1 ví dụ tương đối dễ + cụ thế
http://www.itviet360.com/2012/11/giai-phuong-trinh-bac-2-trong-c.html

Cách giải non nớt. Kỹ thuật HĐT ấu trĩ.

pinochu
30-11-2012, 20:23
Cách giải non nớt. Kỹ thuật HĐT ấu trĩ.
mấy trang web này chủ yếu để câu quảng cáo mà bác

star215
01-12-2012, 10:34
bạn nên lập trình theo hướng đối tượng..chứ hướng thủ tục không hiệu quả lắm

megaownage
03-12-2012, 15:28
bạn nên lập trình theo hướng đối tượng..chứ hướng thủ tục không hiệu quả lắm

Có biết cách so sánh HĐT và Cấu Trúc hôn đó! Nói nghe gọn ênh.

Trên nguyên tắc, nếu chỉ làm việc đơn giản thì viết kiểu cấu trúc hiệu quả hơn HĐT. Giải pt bậc 2 là vấn đề đơn giản.