]]> ]]>

Квадратное уравнение в Oz

Пример для версий Mozart 1.4.0

Oz — строго типизированный язык, поэтому все преобразования между строковыми и числовыми типами выполняются в явном виде. Коэффициенты преобразуются вначале в целые числа, а потом в числа с плавающей точкой, потому что при попытке преобразовать строку “1” сразу в число с плавающей точкой возникает ошибка (строка “1.” преобразуется нормально). Унарный минус в Oz обозначается ~.

functor
 
import
   Application System Open

define 

local
   A B C D
   class TextFile from Open.file Open.text end
   StdIn = {New TextFile init(name:stdin)}
in
   {System.showInfo "A = "}
   A = {Int.toFloat {String.toInt {StdIn getS($)}}}
   if A==0 then 
      {System.showInfo "Not a quadratic equation."}
      {Application.exit 0}
   end
   {System.showInfo "B = "}
   B = {Int.toFloat {String.toInt {StdIn getS($)}}}
   {System.showInfo "C = "}
   C = {Int.toFloat {String.toInt {StdIn getS($)}}}
   D = B*B - 4.0*A*C
   if D==0.0 then
      {System.showInfo "x = "#{Float.toString ~0.5*B/A}}
      {Application.exit 0}
   end
   if D>0.0 then
      {System.showInfo "x1 = "#{Float.toString ~0.5*(B-{Sqrt D})/A}}
      {System.showInfo "x2 = "#{Float.toString ~0.5*(B+{Sqrt D})/A}}
   else
      {System.showInfo "x1 = ("#{Float.toString ~0.5*B/A}#","#{Float.toString 0.5*{Sqrt ~D}/A}#")"}
      {System.showInfo "x2 = ("#{Float.toString ~0.5*B/A}#","#{Float.toString ~0.5*{Sqrt ~D}/A}#")"}
   end
   {Application.exit 0}
end

end

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам