Нельзя преобразовать тип string к char

nikita_orta

Program t;
Uses
   Crt;
Var
   x,                {  Аргумент                   }
   y:real;           {  Функция                    }
Const
   x1 = -2.517;      {  Левая граница  промежутка  }
   x2 =  3.571;      {  Правая граница промежутка  }
Const
   l_br:char='';  {  Левая  скобка              }
   r_br:char='';  {  Правая скобка              }
Var
   l_int:string[6];  {  Левая граница  промежутка  }
   r_int:string[6];  {  Правая граница промежутка  }
Begin
 ClrScr;
 repeat
  {  Ввод значения аргумента      }
  writeln;
  writeln('x=');  read(x);
 
  {  Вычисление значения функции  }
  if (x <= x1)
   then {  Левее х1?  }
    begin
     {  Вычисление значения функции  на (-в€ћ, x1]  }
     l_br:= '(';
     r_br:= ')';
     l_int:='+в€ћ';
     str(x1:5, r_int);
     y:= 2;
    end
   else
    if (x <= x2)
      then {  Левее х2?  }
       begin
        {  Вычисление значения функции  на (x1, x2]  }
         l_br:= '(';
         r_br:= ')';
         str(x1:3, l_int);
         str(x2:3, r_int);
         y:= 3;
       end
      else
       begin
        {  Вычисление значения функции  на (x2, +в€ћ)  }
        l_br:= '(';
        r_br:= ')';
        str(x2:5, l_int);
        r_int:='-в€ћ';
        y:= 4;
       end;
 
  {  Вывод результата  }
    writeln('Интервал ',
       l_br, l_int:3,',', r_int:3, r_br,' ; y=',y:5);
  {  Считывание клавиши для проверки на окончание}
 until  Ord(readkey)=27;
End.
2 ответа

nikita_orta

Компилируется, что-то делает.
program t;
 
Uses
Crt;
 
var
  x,                {  Аргумент                   }
  y: real;{  Функция                    }
 
const
  x1 = -2.517;      {  Левая граница  промежутка  }
  x2 = 3.571;{  Правая граница промежутка  }
 
var
  l_int: string;  {  Левая граница  промежутка  }
  r_int: string;{  Правая граница промежутка  }
  l_br: char;
  r_br: char;
 
begin
  ClrScr;
  l_br := #0;  {  Левая  скобка              }
  r_br := #0;{  Правая скобка              }
  repeat
    {  Ввод значения аргумента      }
    writeln;
    writeln('x=');
    read(x);
    
    {  Вычисление значения функции  }
    if (x <= x1)
    then {  Левее х1?  }
    begin
      {  Вычисление значения функции  на (-в€ћ, x1]  }
      l_br := '(';
      r_br := ')';
      l_int := '+в€ћ';
      str(x1, r_int);
      y := 2;
    end
    else
    if (x <= x2)
      then {  Левее х2?  }
    begin
        {  Вычисление значения функции  на (x1, x2]  }
      l_br := '(';
      r_br := ')';
      str(x1:3, l_int);
      str(x2:3, r_int);
      y := 3;
    end
      else
    begin
        {  Вычисление значения функции  на (x2, +в€ћ)  }
      l_br := '(';
      r_br := ')';
      str(x2:5, l_int);
      r_int := '-в€ћ';
      y := 4;
    end;
    
    {  Вывод результата  }
    writeln('Интервал ',
       l_br, l_int:3, ',', r_int:3, r_br, ' ; y=', y:5);
    {  Считывание клавиши для проверки на окончание}
  until Ord(readkey) = 27;
end.


nikita_orta

Const
   l_br:char='(';  {  Левая  скобка              }
   r_br:char=')';  {  Правая скобка              }
Только смысла в том нет никакого... Ибо достаточно:
  if x<=x1 then
    WriteLn('(-oo, ',x1:0:3,']; y = ',2)
  else if x<=x2 then
    WriteLn('('x1:0:3,', ',x2:0:3,']; y = ',3)
  else
    WriteLn('(',x2:0:3,', +oo); y = ',4);