Твой код не проверял. Недавно кому-то делал на Delphi. Переделал на Pascal.
Приложил картинкой, если запутаешься. Если что-то не так работает, я поправлю.
//Pascal var a, b, c, d, x1, x2: real; begin write('Введите a = '); readln(a); write('Введите b = '); readln(b); write('Введите c = '); readln(c); if ((a = 0) and (b = 0) and (c = 0)) then writeln('X любое') else if a <> 0 then begin d := sqr(b) - 4 * a * c; if (d > 0) then begin x1 := (-b+sqrt(d))/(2*a); x2 := (-b-sqrt(d))/(2*a); writeln('x1 = ', x1); writeln('x2 = ', x2); end else if d = 0 then begin x1:=-b/(2*a); x2:=x1; writeln('x1 = ', x1); //writeln('x2 = ', x2); end else if d < 0 then writeln('Корней нет.'); end else if (a = 0) and (b = 0) then writeln('Решений нет.') else if (a = 0) then begin x1 := (-c)/b; writeln('x = ', x1); end; end.
// PascalABC.NET 3.3, сборка 1590 от 03.12.2017 // Внимание! Если программа не работает, обновите версию!
begin var n:=ReadInteger('n='); var a:=ArrRandom(n,-50,50); a.Println; var m:=n-1; var found:=false; for var i:=0 to m do begin for var j:=0 to m do if i=j then continue else begin for var k:=0 to m do if (k=i) or (k=j) then continue else if a[i]+a[j]+a[k]=0 then begin Println('Решение:',a[i],a[j],a[k]); found:=true; break end; if found then break end; if found then break end; if not found then Writeln('Нет нужной тройки чисел') end.