Решение Квадратного Уравнения

В процессе учебной и научной деятельности достаточно часто возникает необходимость в решении квадратного уравнения.
Далее приводится вариант программы на языке С (компилятор BORLAND C++ 3.1)

Show »

// Решение любого квадратного уравнения
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main(void)
{
 float a,b,c,x1,x2,d,dd,k,q,t=1;
 puts("Введите коэффициенты квадратного уравнения a,b,c ");
 scanf("%f%f%f",&a,&b,&c);
 while(t==1)
 {
 if ((a==b) && (a==c) && (a==0))
 {
 printf("X может иметь любое значение."); 
 break; 
 } 
 if((a==b) && (a==0))
 {
 printf("Уравнение корней не имеет.");
 break; 
 } 
 if (a==0)
 {
 x1=-c/b;
 printf("Уравнение имеет один корень=%5.3f",x1);
 break; 
 } 
 if (a<0)
 {
 a=-a;
 b=-b;
 c=-c; 
 } 
 d=b*b-4*a*c;
 k=(d<0)?(-1):(1);
 dd=sqrt(d*k);
 if (dd==0)
 {
 x1=-b/2/a;
 printf("Уравнение имеет один корень=%5.3f",x1);
 break;
 }
 if (k==-1)
 {
 q=dd/2/a;
 x1=-b/2/a;
 printf("Уравнение имеет два комплексных корня.n");
 printf("%5.3f+%5.3f in",x1,q);
 printf("%5.3f-%5.3f in",x1,q);
 break; 
 }
 else
 {
 x1=-(b+dd)/2/a;
 x2=-(b-dd)/2/a; 
 printf("Уравнение имеет два действительных корня.n");
 printf("%5.3fn",x1);
 printf("%5.3fn",x2);
 break; 
 } 
 } 
 return 0;
}

Далее приводится текст программы на языке PASCAL. Проверено на компиляторах
PASCALABC 3.1 и PASCALABC.NET 2.2.

Show »

// Решение любого квадратного уравнени¤
uses crt;

var a,b,c,x1,x2,d,dd,k,q,t:real;
begin
 writeln('¬ведите коэффициенты квадратного уравнени¤ a,b,c ');
 readln(a,b,c);
 t:=1;
 while(t=1) do
 begin
 if ((a=b) and (a=c) and (a=0)) then
 begin
 writeln('X может иметь любое значение.'); 
 break; 
 end;
 if((a=b) and (a=0)) then
 begin
 writeln('”равнение корней не имеет.');
 break; 
 end;
 if (a=0) then
 begin
 x1:=-c/b;
 writeln('”равнение имеет один корень=',x1:5:3);
 break; 
 end;
 if (a<0) then
 begin
 a:=-a;
 b:=-b;
 c:=-c; 
 end;
 d:=b*b-4*a*c;
 if (d<0) then k:=-1
 else k:=1;
 dd:=sqrt(d*k);
 if (dd=0) then
 begin
 x1:=-b/2/a;
 writeln('”равнение имеет один корень=',x1:5:3);
 break;
 end;
 if (k=-1) then
 begin
 q:=dd/2/a;
 x1:=-b/2/a;
 writeln('”равнение имеет два комплексных корн¤.');
 writeln(x1:5:3,'+',q:5:3,'i');
 writeln(x1:5:3,'-',q:5:3,'i');
 break; 
 end
 else
 begin
 x1:=-(b+dd)/2/a;
 x2:=-(b-dd)/2/a; 
 writeln('”равнение имеет два действительных корн¤.');
 writeln(x1:5:3);
 writeln(x2:5:3);
 break; 
 end;
 end;
end.

Далее приводится текс программы на языке QBASIC в компиляторе
MS-DOS QBASIC 1.0.

Show »

' Решение любого квадратного уравнения

DIM a AS SINGLE, b AS SINGLE, c AS SINGLE, x1 AS SINGLE, x2 AS SINGLE
DIM d AS SINGLE, dd AS SINGLE, k AS SINGLE, q AS SINGLE, t AS SINGLE
INPUT "Введи коэффициенты квадратного уравнения a,b,c:", a, b, c
t = 1
DO WHILE (t = 1)
 IF ((a = b) AND (a = c) AND (a = 0)) THEN
 PRINT "X может иметь любое значение."
 EXIT DO
 END IF
 IF ((a = b) AND (a = 0)) THEN
 PRINT ("Уравнение корней не имеет.")
 EXIT DO
 END IF
 IF (a = 0) THEN
 x1 = -c / b
 PRINT USING "Уравнение имеет один корень=##.###"; x1
 EXIT DO
 END IF
 IF (a < 0) THEN
 a = -a
 b = -b
 c = -c
 END IF
 d = b * b - 4 * a * c
 IF (d < 0) THEN
 k = -1
 ELSE
 k = 1
 END IF
 dd = SQR(d * k)
 IF (dd = 0) THEN
 x1 = -b / 2 / a
 PRINT USING "Уравнение имеет один корень=##.###"; x1
 EXIT DO
 END IF
 IF (k = -1) THEN
 q = dd / 2 / a
 x1 = -b / 2 / a
 PRINT ("Уравнение имеет два комплексных корня.")
 PRINT USING "+##.### + ##.### i"; x1; q
 PRINT USING "+##.### - ##.### i"; x1; q
 EXIT DO
 ELSE
 x1 = -(b + dd) / 2 / a
 x2 = -(b - dd) / 2 / a
 PRINT ("Уравнение имеет два действительных корня.")
 PRINT USING "##.###"; x1
 PRINT USING "##.###"; x2
 EXIT DO
 END IF
LOOP
END

Далее приводится текст этой же программы, написанный на C# 4.0 в компиляторе Visual C# 2010 Express.

Show »

/***********************************************************
 Программа решения квадратного уравнения
***********************************************************/
using System;
using System.Linq;
namespace ConsoleApplication1
{
 class Program
 {
 static void Main(string[] args)
 {
 float a, b, c, d, k, t;
 double dd,q,x1,x2;
 Console.WriteLine("Введи в одну строку через один пробел коэффициенты квадратного уравнения");
 float[] abc = Console.ReadLine().Split().Select(float.Parse).ToArray();
 a = abc[0];
 b = abc[1];
 c = abc[2];
 t = 1;
 while (t == 1)
 {
 if ((a == b) && (a == c) && (a == 0))
 {
 Console.WriteLine("X может иметь любое значение.");
 break;
 }
 if ((a == b) && (a == 0))
 {
 Console.WriteLine("Уравнение корней не имеет.");
 break;
 }
 if (a == 0)
 {
 x1 = -c / b;
 Console.WriteLine("Уравнение имеет один корень={0:f3}", x1);
 break;
 }
 if (a < 0)
 {
 a = -a;
 b = -b;
 c = -c;
 }
 d = b * b - 4 * a * c;
 k = (d < 0) ? (-1) : (1);
 dd = Math.Sqrt(d * k);
 if (dd == 0)
 {
 x1 = -b / 2 / a;
 Console.WriteLine("Уравнение имеет один корень={0:f3}", x1);
 break;
 }
 if (k == -1)
 {
 q = dd / 2 / a;
 x1 = -b / 2 / a;
 Console.WriteLine("Уравнение имеет два комплексных корня.n");
 Console.Write("{0:f3} + {1:f3}in", x1, q);
 Console.Write("{0:f3} - {1:f3}in", x1, q);
 break;
 }
 else
 {
 x1 = -(b + dd) / 2 / a;
 x2 = -(b - dd) / 2 / a;
 Console.WriteLine("Уравнение имеет два действительных корня.n");
 Console.Write("{0:f3}n", x1);
 Console.Write("{0:f3}n", x2);
 break;
 }
 }
 Console.ReadLine(); // держит экран
 }
 }
}



Ниже приводится текст этой же программы составленный для интерпретатора Python 3.4.3.

Show »

#***********************************************************
# Решение квадратного уравнения
#***********************************************************
import math
print('Введи коэффициенты квадратного уравнения a,b,c:')
# собствнно ввод с клавы через пробел
(a,b,c)= list(map(float, input().split())) 
t = 1
while t == 1:
 if ((a == b) and (a == c) and (a == 0)):
 print ('X может иметь любое значение.')
 break
 if ((a == b) and (a == 0)):
 print('Уравнение корней не имеет.')
 break
 if (a == 0):
 x1 = -c / b
 print('Уравнение имеет один корень=%6.3f'%(x1), end='')
 break
 if (a < 0):
 a = -a
 b = -b
 c = -c
 d = b * b - 4 * a * c
 if (d < 0):
 k = -1
 else:
 k = 1
 dd = math.sqrt(d * k)
 if (dd == 0):
 x1 = -b / 2 / a
 print('Уравнение имеет один корень=%6.3f'%(x1), end='')
 break
 if (k == -1):
 q = dd / 2 / a
 x1 = -b / 2 / a
 print('Уравнение имеет два комплексных корня.')
 print('%6.3f + %6.3f i'%(x1,q), end='n')
 print('%6.3f - %6.3f i'%(x1,q), end='')
 break
 else:
 x1 = -(b + dd) / 2 / a
 x2 = -(b - dd) / 2 / a
 print('Уравнение имеет два действительных корня.')
 print('%6.3f'%(x1), end='n')
 print('%6.3f'%(x2), end='')
 break 
input() # команда ДЕРЖИТ экран


Ниже приводится текст этой же программы составленный для компилятора Compaq Visual Fortran 2000.

Show »

!***********************************************************
! Решение квадратного уравнени¤
!***********************************************************
real*4 a,b,c,x1,x2,d,dd,q
integer t
!print*,'¬веди коэффициенты квадратного уравнени¤ a,b,c:'
print*,'Wwedi koeffizienti a,b,c:'
! собствнно ввод с клавы через пробел
read*,a,b,c
t = 1
do while (t==1)
 if ((a == b) .and. (a == c) .and. (a == 0)) then
! print*,'X может иметь любое значение.'
 print*,'X LYBOI'
 exit
 end if 
 if ((a == b) .and. (a == 0)) then
! print*,'”равнение корней не имеет.'
 print*,'NET KORNEI.'
 exit
 end if 
 if (a == 0) then
 x1 = -c / b
! print*,'”равнение имеет один корень= '
 print*,'ODIN KOREN= '
 write(*,'(F6.3)')x1 
 exit
 end if 
 if (a < 0) then
 a = -a
 b = -b
 c = -c
 end if
 d = b * b - 4 * a * c
 if (d < 0) then
 k = -1
 else
 k = 1
 end if 
 dd = sqrt(d * k)
 if (dd == 0) then
 x1 = -b / 2 / a
! print*,'”равнение имеет один корень= '
 print*,'ODIN KOREN= '
 write(*,'(F6.3)')x1 
 exit
 end if 
 if (k == -1) then
 q = dd / 2 / a
 x1 = -b / 2 / a
! print*,'”равнение имеет два комплексных корн¤.'
 print*,'DWA KOMPLEXNIX KORNA.'
 write(*,'(F6.3,"+",F6.3,"i")')x1,q 
 write(*,'(F6.3,"-",F6.3,"i")')x1,q 
 exit
 else
 x1 = -(b + dd) / 2 / a
 x2 = -(b - dd) / 2 / a
! print*,'”равнение имеет два действительных корн¤.'
 print*,'DWA DEISTVIT. KORNA.'
 write(*,'(F6.3)')x1
 write(*,'(F6.3)')x2
 exit 
 end if 
end do 
end