Вопрос по Pascal

Тема в разделе "Pascal and Delphi", создана пользователем denis79513, 25 апр 2011.

  1. denis79513

    denis79513 Гость

    Репутация:
    0
    Точнее 2 вопроса, первый, допустим у меня переменной с типом real присваивается значение 5 а на экране это отображается как 5,0000000000000 Е0 как сделать чтобы нулики все справа уходили?
    2 вопрос, выделение корня из числа: sqrt(число) выглядит так, а как сделать проверку, извлекается ли корень из числа? Чтобы сначала сделать проверку, и если корень извлекается то тогда его извлекать чтобы ошибка не вылетала.
     
  2. Dock1100

    Dock1100 :-]

    Репутация:
    0
    Регистрация:
    9 ноя 2009
    Сообщения:
    665
    Симпатии:
    1
    1. writeln(chislo:8:2); 8- количество знаков целой части, 2 - количество знаков дробной части
    2. if chislo < 0 then writeln('inncorect') else ... ;
     
  3. denis79513

    denis79513 Гость

    Репутация:
    0
    по поводу второго вопроса, отрицательные числа это понятно, но из 2 то корень не извлекается, хотя 2>0
     
  4. Dock1100

    Dock1100 :-]

    Репутация:
    0
    Регистрация:
    9 ноя 2009
    Сообщения:
    665
    Симпатии:
    1
    Это почему?
    sqrt(2) = 1,414213562373.....
    Корень можно извель из любого положительного числа и нуля, другой вопрос что будетли целым полученый корень, вы это имеете виду?
     
  5. denis79513

    denis79513 Гость

    Репутация:
    0
    да, но допустим 0,5 это корень из 0,25 он нацело извлекается но число не целое, т.е нужно проверить, извлекается ли из числа корень нацело.
     
  6. AndrewSpider

    AndrewSpider Гость

    Репутация:
    0
    ну а тупо возвести в квадрат и проверить, не догодались?))
    Код (Delphi):
    var a,b:real;
    begin
    a:=4;
    b:=sqrt(a);
    if (b*b=a) then writeln('sqrt(',a,') = ',b) else writeln('sqrt - бесконечная дробь');
    end.
    Если хотите ещё проверте на не отрицательность числа=)
    Не очень стабильный метод, но бывает работает, когда корень не извлекается и получается бесконечная дробь=)
     
  7. Dock1100

    Dock1100 :-]

    Репутация:
    0
    Регистрация:
    9 ноя 2009
    Сообщения:
    665
    Симпатии:
    1
    C математической точки зрения, это не правильно поскольку 2=sqr(sqrt(2))=sqrt(2)*sqrt(2)=sqrt(4)=2,
    но в тут в принципе может прокатить, поскольку точность вычисления будет не очень большой(допустимой размером типа переменной).
     
  8. nayke

    nayke Well-Known Member

    Репутация:
    0
    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Насколько я помню сравнение чисел типа real работает крайне коряво.
    Посмотрите функцию frac.
     
Загрузка...

Поделиться этой страницей