На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> Округление числа
    Заранее огромное спасибо..
    Мне задали задачку (Запрещенны служебные слова for while repeat if):
    1. Округлить до ближайшего целого заданное вещественное число.

    Входные данные:
    Во входном потоке задано вещественное число А (-30000 < A < 30000)

    Выходные данные:
    В выходной поток вывесли единственное целое число.

    ExpandedWrap disabled
       Var a:real;
       Begin
       Readln(a);
       WriteLn(round(a));
       End.


    Казалось бы легкая задача, а не получается... и говорят, что нужно лучше подумать...
      А что не так? (сомневаюсь, что это задача на использование внутреннего формата ieee-754)
      Сообщение отредактировано: MBo -
        Цитата MBo @
        А что не так? (сомневаюсь, что это задача на использование внутреннего формата ieee-754)

        А вот этого я тоже не понимаю, программа делает именно то, что нужно, а вот сайт , где я решаю их, говорит что это не верно.....
          Формулировка точная приведена?
          Если это проверяется автоматом - может быть дело в формате ввода и вывода?
          Сообщение отредактировано: MBo -
            Цитата MBo @
            Формулировка точная приведена?
            Если это проверяется автоматом - может быть дело в формате ввода и вывода?

            Возможно.. если быть точнее , то так

            Входные данные:
            -Во входном потоке задано вещественное число A (-30000 < A <30000) с точностью до четырех знаков после запятой.
            Выходные данные:
            -В выходной поток вывели единственное целое число.

            и еще , функция принимает real, а выводит Integer , а значит проблем не должно быть...
            Сообщение отредактировано: Papygai4ik -
              Какая ошибка выдается?

              Десятичный разделитель (точка/запятая) правильно учитывается?

              Readln ждет перевода строки? Он обеспечивается вводом?
                Цитата MBo @
                Какая ошибка выдается?

                Десятичный разделитель (точка/запятая) правильно учитывается?

                Readln ждет перевода строки? Он обеспечивается вводом?

                Ошибки нету, но тесты не проходит. Да все правильно,да. Может есть какие-то другие методы округления числа в паскале?
                  Ладно, спасибо ;) Сам все додумал :lol: Все можно было решить через trunc и frac!
                    А смысл? Round осуществляет точно то, что нужно. Единственный тонкий момент - округление чисел XXX.5000 - по умолчанию до чётного.

                    Сообщения были разделены в тему "spam"
                    Сообщение отредактировано: MBo -
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0301 ]   [ 16 queries used ]   [ Generated: 29.07.21, 05:03 GMT ]