#language PascalScript

//Мнемокод скрипта: Расчет_веса_тела_на_разных_планетах

Const
  Земля_Код = 3; //код планеты Земля

Var
  Планета_Код:integer;
  МассаТела,
  ВесТелаНаЗемле,
  ВесТелаНаПланете:extended;
  Ошибка_Код:integer;

function КодПланеты_Определить(НаименованиеПланеты:string):integer;
begin
  Result:=0;
  НаименованиеПланеты:=trim(НаименованиеПланеты);
  if НаименованиеПланеты<>'' then begin
     НаименованиеПланеты := Lowercase(НаименованиеПланеты);
     if НаименованиеПланеты = 'меркурий' then Result:=1;
     if НаименованиеПланеты = 'венера' then Result:=2;
     if НаименованиеПланеты = 'земля' then Result:=Земля_Код;
     if НаименованиеПланеты = 'марс' then Result:=4;
     if НаименованиеПланеты = 'юпитер' then Result:=5;
     if НаименованиеПланеты = 'сатурн' then Result:=6;
     if НаименованиеПланеты = 'уран' then Result:=7;
     if НаименованиеПланеты = 'нептун' then Result:=8;
     if НаименованиеПланеты = 'плутон' then Result:=9;
     if НаименованиеПланеты = 'луна' then Result:=10;
     if НаименованиеПланеты = 'солнце' then Result:=11;
  end;
end;

function УскорениеСвободногоПадения_Определить(КодПланеты:integer):extended;
begin
  Result := 0.0;  { м/сек2 }
  if КодПланеты>0 then begin
     if КодПланеты =  1 then Result := 3.7;     //Меркурий
     if КодПланеты =  2 then Result := 8.87;    //Венера
     if КодПланеты =  Земля_Код then Result := 9.80665; //Земля
     if КодПланеты =  4 then Result := 3.771;   //Марс
     if КодПланеты =  5 then Result := 24.79;   //Юпитер
     if КодПланеты =  6 then Result := 10.44;   //Сатурн
     if КодПланеты =  7 then Result := 8.87;    //Уран
     if КодПланеты =  8 then Result := 11.15;   //Нептун
     if КодПланеты =  9 then Result := 0.617;   //Плутон
     if КодПланеты = 10 then Result := 1.62;    //Луна
     if КодПланеты = 11 then Result := 274.0;   //Солнце
  end;
end;

function Тело_Масса_вычислить(Вес_на_Земле:extended):extended;
Var
  УскорСвобПаден:extended; //на Земле
begin
  Result:=0.0;
  УскорСвобПаден:=УскорениеСвободногоПадения_Определить(Земля_Код);
  if УскорСвобПаден>0 then begin
     Result:=Вес_на_Земле/УскорСвобПаден;
  end;
end;

function Тело_Вес_вычислить:extended;
Var
  УскорСвобПаден:extended; //на планете
begin
  Result:=0.0;
  УскорСвобПаден:=УскорениеСвободногоПадения_Определить(Планета_Код);
  Result:=МассаТела * УскорСвобПаден;
end;

BEGIN

  Ошибка_Код:=0;

  //---------------------------------------
  //Возвращаемые значения
  Результат_Выполнения:=''; //Возвращаемое значение
  Масса := '0';
  Вес_на_планете := '0';
  //---------------------------------------

  Планета_Код:=КодПланеты_Определить(Планета);
  if Планета_Код > 0 then begin
     ВесТелаНаЗемле:=Строка_в_ВеществЧисло(trim(Вес_на_Земле), 0);
     if ВесТелаНаЗемле>0 then begin
        МассаТела := Тело_Масса_вычислить(ВесТелаНаЗемле);
        ВесТелаНаПланете   := Тело_Вес_вычислить;

        //---------------------------------------
        //Возвращаемые значения
        Результат_Выполнения:='Ok';
        Масса := FloatToStr(МассаТела);
        Вес_на_планете := FloatToStr(RoundTo(ВесТелаНаПланете,1));
        //---------------------------------------

     end
     else begin
       Ошибка_Код:=2;
       //Возвращаемое значение
       Результат_Выполнения:='Ошибка! Вес тела на Земле задан НЕ корректно';
     end;
  end
  else begin
     Ошибка_Код:=1;
     //Возвращаемое значение
     Результат_Выполнения:='Ошибка! Планета задана НЕ корректно';
  end;

END.