В процессе учебной и научной деятельности достаточно часто возникает необходимость в решении квадратного уравнения.
Далее приводится вариант программы на языке С (компилятор BORLAND C++ 3.1)
// Решение любого квадратного уравнения #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.
// Решение любого квадратного уравнени¤ 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.
' Решение любого квадратного уравнения 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.
/*********************************************************** Программа решения квадратного уравнения ***********************************************************/ 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.
#*********************************************************** # Решение квадратного уравнения #*********************************************************** 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.
!*********************************************************** ! Решение квадратного уравнени¤ !*********************************************************** 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