Вопрос по Pascal

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

  1. denis79513

    denis79513 Гость

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

    Dock1100 :-]

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

    denis79513 Гость

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

    Dock1100 :-]

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

    denis79513 Гость

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

    AndrewSpider Гость

    ну а тупо возвести в квадрат и проверить, не догодались?))
    Код (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 :-]

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

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Насколько я помню сравнение чисел типа real работает крайне коряво.
    Посмотрите функцию frac.
     
Загрузка...
Похожие Темы - Вопрос по Pascal
  1. ApplePen
    Ответов:
    0
    Просмотров:
    61
  2. gURaBA_N
    Ответов:
    3
    Просмотров:
    92
  3. kartaman
    Ответов:
    0
    Просмотров:
    127
  4. Peter
    Ответов:
    4
    Просмотров:
    522
  5. di0d_
    Ответов:
    1
    Просмотров:
    437

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