I етап. Аналіз умови задачі, визначення вхідних даних і кінцевих результатів
Вхідні дані: А, В, C.
Кінцеві результати: X1, X2 , X.
II етап. Побудова інформаційної моделі
Очевидно, інформаційною моделлю розв’язування цієї задачі є математична модель, яка складається з формул, за якими знайдемо X1, X2 , X.
Ці формули виглядатимуть так:
D=B2 - 4*A*C
X= -B/A якщо D=0
X1 = (-B+SQRT (D))/(2*A) X2 = (-B-SQRT(D))/(2*A) якщо D>0
Крім того, одержані дані бажано округлити до сотих.
III етап. Вибір програмних засобів для розв’язування задачі виглядатимуть так:
Прикладним програмним засобом, який можна використати для розв’язування задачі, може бути, наприклад, програма-калькулятор або табличний процесор. Або можна скласти спеціальну програму для розв’язування саме цієї задачі, використовуючи одну з мов програмування.
IV етап. Складання алгоритму розв'язування задачі.
V етап. Отримання комп'ютерної моделі.
D - B2*B2-4*A2*C2
Х1 - IF(D2<0;0;(-B2+SQRT(D2))/(A2*2))
Х2 - IF(D2<0;0;(-B2-SQRT(D2))/(A2*2))
program kv__rivn;
Uses CRT;
var A, B, C, X1, X2, D: real;
begin
writeln ('Квадратне рiвняння' ) ;
TextColor (06);
write ('Введiть коефiцiєнти рiвняння через пробiл! А, В, C - ' ) ;
readln(A, B, C);
TextColor (03);
D:=B*B - 4*A*C ;
if A=0
then writeln('Єдиний корiнь X=', -C/B)
else
if D<0
then writeln('Дiйсних коренiв немає')
else
if D=0
then writeln('Єдиний корiнь X=', -B/A:3:3)
else
begin
X1:= (-B+SQRT (D) ) / (2*A);
X2:= (-B-SQRT(D))/(2*A) ;
writeln('X1=' ,X1:3:3) ;
writeln('X2=',X2:3:3)
end;
readln;
end.
PRINT "Љў ¤а ⥠аiўпп" 'Квадратне рівняння
INPUT "A=", a
INPUT "B=", b
INPUT "C=", c
d = b ^ 2 - 4 * c * a
IF a = 0 THEN PRINT "X="; -c / b
IF d < 0 THEN PRINT "Љ®аҐi Ґ¤i©бi"
IF d > 0 THEN PRINT "X1="; (-b + SQR(d)) / (2 * a); "X2="; (-b - SQR(d)) / (2 * a);
IF d = 0 THEN PRINT "X="; -b / (2 * a)
INPUT z
TextWindow.WriteLine("Квадратне рiвняння")
TextWindow.Write("A= ")
A=TextWindow.ReadNumber()
TextWindow.Write("B= ")
B=TextWindow.ReadNumber()
TextWindow.Write("C= ")
C=TextWindow.ReadNumber()
D=B*B-4*a*c
TextWindow.WriteLine(" ")
If a=0 Then
TextWindow.Write("X=")
TextWindow.WriteLine(Math.Round(-c/b*100)/100)
Else
If D<0 Then
TextWindow.Write("Коренi не дiйснi")
Else
If D=0 Then
TextWindow.Write("X=")
TextWindow.WriteLine(Math.Round(-b/(2*a)*100)/100)
Else
If D>0 Then
TextWindow.Write("X1=")
TextWindow.WriteLine(Math.Round((-b+Math.SquareRoot(D))/(2*a)*100)/100)
TextWindow.Write("X2=")
TextWindow.WriteLine(Math.Round((-b-Math.SquareRoot(D))/(2*a)*100)/100)
Endif
Endif
EndIf
EndIf
<title>Квадратне рівняння</title>
<body><div align="center">
<b>Опрацювання квадратного рівняння a·x² + b·x + c = 0.</b>
<form name="square" action="javascript:square_equation()" id="1419313176">
a = <input name="square_a" type="text" value=" " size="4">
b = <input name="square_b" type="text" value=" " size="4">
c = <input name="square_c" type="text" value=" " size="4">
<input type="submit" value="Порахувати">
<input type="reset" value="Reset">
</form>
Опрацювання: <span id="square_sol">Введіть коефіцієнти і нажміть "Порахувати"</span>
</div>
<script language="javascript">
function square_equation() {
var a = document.square.square_a.value;
var b = document.square.square_b.value;
var c = document.square.square_c.value;
var sol = document.getElementById("square_sol");
var d = b * b - 4 * a * c;
if (a == 0) {
string = "X = "+ (-1)*c/b;
} else {
if (d == 0) {
string = "X = "+ (-1)*b / (2 * a);
} else {
if (d > 0) {
string ="X1 = "+ ((-b + Math.sqrt(d)) / (2 * a))+" "+"X2 = "+ ((-b - Math.sqrt(d)) / (2 * a));
} else {
if (d < 0) {
string = "Корeнi не дiйснi";
}
}
}
}
sol.innerHTML = string;
}
</script>
</body>
#include <stdio.h>
#include <math.h>
int main(void)
{
float a,b,c,d;
printf ("Љў ¤а ⥠аiўпп\n \n");
printf ( "A= ");
scanf("%f", &a);
printf ( "B= ");
scanf("%f", &b);
printf ( "C= ");
scanf("%f", &c);
d = b * b - 4 * a * c;
if (a == 0) {
printf ("\nX= %f", -c/b);
} else {
if (d == 0) {
printf ("\nX= %f", -b / (2 * a));
} else {
if (d > 0) {
printf ("\nX1= %f", (-b + sqrt(d)) / (2 * a));
printf ("\nX2= %f", (-b - sqrt(d)) / (2 * a));
} else {
if (d < 0) {printf ("\nЉ®аҐi Ґ ¤i©бi ");}
}
}
}
scanf("\n");
return 0;
}
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Квадратне рiвняння");
Console.Write("A = ");
double a = Convert.ToDouble(Console.ReadLine());
Console.Write("B = ");
double b = Convert.ToDouble(Console.ReadLine());
Console.Write("C = ");
double c = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(" ");
double d = b * b - 4 * a * c;
if (a == 0) {
Console.WriteLine ("X = "+-c/b);
} else {
if (d == 0) {
Console.Write("X = "+Math.Round(-b / (2 * a) * 100) / 100);
} else {
if (d > 0) {
Console.WriteLine("X1 = "+Math.Round((-b + Math.Sqrt(d)) / (2 * a) * 100) / 100);
Console.WriteLine("X2 = "+Math.Round((-b - Math.Sqrt(d)) / (2 * a) * 100) / 100);
} else {
if (d < 0) {
Console.Write("Корeнi не дiйснi");
}
}
}
}
Console.ReadKey();
}
}
Class Program
Shared Sub Main()
Console.WriteLine("Квадратне рiвняння")
Console.Write("A = ")
Dim a As Double = Convert.ToDouble(Console.ReadLine())
Console.Write("B = ")
Dim b As Double = Convert.ToDouble(Console.ReadLine())
Console.Write("C = ")
Dim c As Double = Convert.ToDouble(Console.ReadLine())
Console.WriteLine (" ")
Dim d As Double =b*b-4*a*c
IF a=0 THEN
Console.Write ("X = {0}",-c/b)
ELSE
IF d=0 THEN
Console.Write ("X = {0}",Math.Round(-b/(2*a)*100)/100)
ELSE
IF d>0 THEN
Console.WriteLine ("X1 = {0}",Math.Round((-b+Math.Sqrt(d))/(2*a)*100)/100)
Console.WriteLine ("X2 = {0}",Math.Round((-b-Math.Sqrt(d))/(2*a)*100)/100)
ELSE
IF d<0 THEN
Console.Write ("Корeнi не дiйснi")
END IF
END IF
END IF
END IF
Console.ReadKey()
End Sub
End Class
#include <conio.h>
#include <iostream>
#include <cmath>
int main(void)
{
double a,b,c;
setlocale(LC_ALL, "");
std::cout << "Квадратне рiвняння. \n \n";
std::cout << "A = ";
std::cin >> a;
std::cout << "B = ";
std::cin >> b;
std::cout << "C = ";
std::cin >> c;
double d = b * b - 4 * a * c;
if (a == 0) {
std::cout << "\nX = " << -c/b << std::endl;
} else {
if (d == 0) {
std::cout << "\nX = " << -b / (2 * a) << std::endl;
} else {
if (d > 0) {
std::cout << "\nX1 = " << (-b + sqrt(d)) / (2 * a) << std::endl;
std::cout << "\nX2 = " << (-b - sqrt(d)) / (2 * a) << std::endl;
} else {
if (d < 0) {std::cout << "\nКорeнi не дiйснi"<< std::endl;}
}
}
}
getch();
return 0;
}
print ('Квадратне рiвняння')
a=float(input('A='))
b=float(input('B='))
c=float(input('C='))
print ('')
d=b*b-4*a*c
if a==0:print ('X=',-c/b)
else:
if d==0:print ('X=',-b/(2*a))
else:
if d>0:
print ('X1=',(-b+d**(1/2))/(2*a))
print ('X2=',(-b-d**(1/2))/(2*a))
else:print ('Корені недійсні')
input()
Розв’язування задачі в Visual BASIK 6
VERSION 5.00
Begin VB.Form Form1
BorderStyle = 3 'Fixed Dialog
Caption = "Квадратне рівняння"
ClientHeight = 4665
ClientLeft = 45
ClientTop = 390
ClientWidth = 3615
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 4665
ScaleWidth = 3615
ShowInTaskbar = 0 'False
StartUpPosition = 1 'CenterOwner
Begin VB.TextBox Text4
Height = 285
Left = 1560
TabIndex = 16
Top = 4200
Visible = 0 'False
Width = 1335
End
Begin VB.TextBox Text3
Height = 285
Left = 1560
TabIndex = 15
Top = 3720
Visible = 0 'False
Width = 1335
End
Begin VB.TextBox Text2
Height = 300
Left = 1560
TabIndex = 12
Top = 3720
Visible = 0 'False
Width = 1215
End
Begin VB.CommandButton Command3
Caption = "ВИХІД"
Height = 375
Left = 480
TabIndex = 9
Top = 3120
Width = 2295
End
Begin VB.CommandButton Command2
Caption = "Очистка"
Height = 375
Left = 480
TabIndex = 8
Top = 2640
Width = 2295
End
Begin VB.CommandButton Command1
Caption = "СТАРТ"
Height = 375
Left = 480
TabIndex = 7
Top = 2160
Width = 2295
End
Begin VB.TextBox Text1
Height = 285
Index = 2
Left = 1560
TabIndex = 6
Top = 1680
Width = 1215
End
Begin VB.TextBox Text1
Height = 285
Index = 1
Left = 1560
TabIndex = 5
Top = 1200
Width = 1215
End
Begin VB.TextBox Text1
Height = 285
Index = 0
Left = 1560
TabIndex = 4
Top = 720
Width = 1215
End
Begin VB.Label Label8
Caption = "х2 ="
Height = 255
Left = 1080
TabIndex = 14
Top = 4200
Visible = 0 'False
Width = 375
End
Begin VB.Label Label7
Caption = "х1 ="
Height = 255
Left = 1080
TabIndex = 13
Top = 3720
Visible = 0 'False
Width = 375
End
Begin VB.Label Label6
Caption = "х = "
Height = 255
Left = 1080
TabIndex = 11
Top = 3720
Visible = 0 'False
Width = 255
End
Begin VB.Label Label5
Caption = "Корені недійсні"
Height = 255
Left = 960
TabIndex = 10
Top = 3720
Visible = 0 'False
Width = 1575
End
Begin VB.Label Label4
Caption = "c ="
Height = 255
Left = 960
TabIndex = 3
Top = 1680
Width = 375
End
Begin VB.Label Label3
Caption = "b ="
Height = 255
Left = 960
TabIndex = 2
Top = 1200
Width = 375
End
Begin VB.Label Label2
Caption = "a ="
Height = 255
Left = 960
TabIndex = 1
Top = 720
Width = 375
End
Begin VB.Label Label1
Caption = "Введіть коефіцієнти рівняння"
Height = 255
Left = 480
TabIndex = 0
Top = 240
Width = 2655
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
a = Text1(0).Text
b = Text1(1).Text
c = Text1(2).Text
d = b ^ 2 - 4 * c * a
If d < 0 Then Label5.Visible = True
If d = 0 Then
Label6.Visible = True
Text2.Visible = True
Text2.Text = Round((c - b) / a * 100) / 100
End If
If d > 0 Then
Label7.Visible = True
Text3.Visible = True
Text3.Text = Round((-b + Sqr(d)) / (2 * a) * 100) / 100
Label8.Visible = True
Text4.Visible = True
Text4.Text = Round((-b - Sqr(d)) / (2 * a) * 100) / 100
End If
End Sub
Private Sub Command2_Click()
Text1(0).Text = ""
Text1(1).Text = ""
Text1(2).Text = ""
Label5.Visible = False
Label6.Visible = False
Text2.Visible = False
Label7.Visible = False
Text3.Visible = False
Label8.Visible = False
Text4.Visible = False
End Sub
Private Sub Command3_Click()
End
End Sub
Розв’язування задачі в Pascal ABC.NET
procedure Form1.button1_Click(sender: Object; e: EventArgs);
var A, B, C, D, X11, X22: real;
X1,X2,X,X0:string;
begin
A:=StrToFloat(TextBox1.Text);
B:=StrToFloat(TextBox2.Text);
C:=StrToFloat(TextBox3.Text);
D:=B*B - 4*A*C ;
X11:=(-B+SQRT(D))/(2*A);
X22:=(-B-SQRT(D))/(2*A);
X1:=FloatToStr(X11);
X2:=FloatToStr(X22);
X:=FloatToStr(-B/(2*A));
X0:=FloatToStr(-C/B);
if A=0
then MessageBox.Show(X0,'Єдиний корiнь X=')
else
if D<0
then MessageBox.Show('Дiйсних коренiв немає')
else
if D=0
then MessageBox.Show(X,'Єдиний корiнь X=')
else
begin
MessageBox.Show(X1,'Xl=') ;
MessageBox.Show(X2,'X2=')
end;
Close;
end;
Розв’язування задачі в VB.NET
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim a As Double = Convert.ToDouble(TextBox1.Text)
Dim b As Double = Convert.ToDouble(TextBox2.Text)
Dim c As Double = Convert.ToDouble(TextBox3.Text)
Dim X0 As Double = -c / b
Dim D As Double = b * b - 4 * a * c
Dim X As Double = -b / (2 * a)
Dim X1 As Double = (-b + Math.Sqrt(D)) / (2 * a)
Dim X2 As Double = (-b - Math.Sqrt(D)) / (2 * a)
If a = 0 Then
MessageBox.Show(X0, "Єдиний корiнь X=")
Else
If D < 0 Then
MessageBox.Show("Дiйсних коренiв немає")
Else
If D = 0 Then
MessageBox.Show(X, "Єдиний корiнь X=")
Else
MessageBox.Show(X1, "X1=")
MessageBox.Show(X2, "X2=")
End If
End If
End If
End
End Sub
End Class
Розв’язування задачі в C#
private void button1_Click(object sender, EventArgs e)
{
double a = Convert.ToDouble(textBox1.Text);
double b = Convert.ToDouble(textBox2.Text);
double c = Convert.ToDouble(textBox3.Text);
double X0 = -c / b;
double D = b * b - 4 * a * c;
double X = -b / (2 * a);
double X1 = (-b + Math.Sqrt(D)) / (2 * a);
double X2 = (-b - Math.Sqrt(D)) / (2 * a);
string xx = Convert.ToString(X);
string x00 = Convert.ToString(X0);
string xx1 = Convert.ToString(X1);
string xx2 = Convert.ToString(X2);
if (a == 0)
{
MessageBox.Show(x00, "Єдиний корiнь X=");
}
else
{
if (D < 0)
{
MessageBox.Show("Дiйсних коренiв немає");
}
else
{
if (D == 0)
{
MessageBox.Show(xx, "Єдиний корiнь X=");
}
else
{
MessageBox.Show(xx1, "X1=");
MessageBox.Show(xx2, "X2=");
}
}
}
System.Environment.Exit(0);
}
from tkinter import *
def click ():
a = float (entry1.get())
b = float (entry2.get())
c = float (entry3.get())
d=b*b-4*a*c
if a==0:entry4.insert(0,-c/b)
else:
if d==0:entry4.insert(0,-b/(2*a))
else:
if d<0:entry4.insert (0,'Корінь недійсний')
else:
entry4.insert (0,(-b+d**(1/2))/(2*a))
entry5.insert (0,(-b-d**(1/2))/(2*a))
def click1 ():
entry1.delete(0, END)
entry2.delete(0, END)
entry3.delete(0, END)
entry4.delete(0, END)
entry5.delete(0, END)
root=Tk()
root.title('Квадратне рiвняння')
root.geometry('310x400')
label = Label (text = 'Квадратне рiвняння')
label.pack(pady = 10)
labe2 = Label (text = ' a')
labe2.pack(pady = 1)
entry1 = Entry ()
entry1.pack (pady = 1)
labe3 = Label (text = ' b ')
labe3.pack(pady = 1)
entry2 = Entry ()
entry2.pack (pady = 1)
labe4 = Label (text = ' c ')
labe4.pack(pady = 1)
entry3 = Entry ()
entry3.pack (pady = 1)
button = Button (text='Старт', command=click)
button.pack (pady = 10)
button = Button (text='Очистка', command=click1)
button.pack (pady = 1)
labe5 = Label (text = 'X1')
labe5.pack(pady = 1)
entry4 = Entry ()
entry4.pack (pady = 1)
labe6 = Label (text = 'X2')
labe6.pack(pady = 1)
entry5 = Entry ()
entry5.pack (pady = 1)
VI етап. Дослідження отриманих результатів на реальність і на відповідність умові
Після одержання підсумкової програми маємо проаналізувати її реальність.
Якщо таке дослідження виявляє помилки, потрібно шукати їхні причини, виправляти їх і знову проходити етапи, наступні за тим, на якому виявилися помилки.