М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
султик12
султик12
21.05.2021 23:51 •  Информатика

Pascalabc.net вот кусочек программки: // x=3.1 (введено с клавиатуры) // y=0.8 (введено с клавиатуры) // p=2 (рассчитано программой выше) a: =frac(x); // =0,1 b: =frac(y)-0.5; // =0,3 kp: =sqrt(sqr(0.5-a)+b*b); // =0,5 if kp> =0.5 then p: =p+1; и вот тут компьютер почему-то считает, что kp< 0,5 т.е. при выводе на экран, - выводится значение kp=0.5, но при сравнении с 0,5 оно оказывается меньше. перепробовала все, что смогла придумать. даже сравнивала kp с корнем из 0.25 (чем оно и является). безрезультатно. мне нужны конкретные ответы на вопросы: 1) почему переменная, равная 0,5, меньше, чем 0,5? ! 2) как это можно исправить? заранее . ps: вычисление корня заменить ничем нельзя (нахождение гипотенузы)

👇
Ответ:
polinaguskova
polinaguskova
21.05.2021
Чтобы разъяснить происходящее, были сделаны следующие шаги.
1. Константы 3.1 и 0.8 переведены в машинное представление а затем назад в десятичное с максимальной для паскалевских данных вещественного типа real (он же double) точностью (вложения 1 и 2).
2. В системе компьютерной алгебры, позволяющей работать с произвольной точностью (выбрана точность в 30 значащих цифр) для полученных констант выполнены соответствующие заданному фрагменту программы вычисления (вложение 3)
3. Результат 0.499999999999999955591079014996 был переведен в машинное представление. Затем в машинное представление была переведена константа 0.5, которая, как видно во вложении 4, представляется в компьютере точно. Поэтому проверка на точное равенство с 0.5 дает не тот результат, который Вы ожидали.
4. Можно было также воспользоваться программой на паскале.
begin
  var x:=3.1;
  var y:=0.8;
  var p:=2;
  var a:=Frac(x); // =0,1
  var b:=Frac(y)-0.5; // =0,3
  var kp:=sqrt(sqr(0.5-a)+b*b); // =0,5
  if abs(kp-0
  Writeln(kp-0.5)
end.

Результат: -5.55111512312578E-17
Это как раз то, что так портит Вам всю картину.

По поводу Вашего условия if kp>=0.5 then p=p+1;
Ошибка имеет порядок 0.6·10⁻¹⁶ и наверно ничего страшного не будет, если оператор (с запасом) подправить на if kp>=(0.5-1e-15) then p:=p+1;

Pascalabc.net вот кусочек программки: // x=3.1 (введено с клавиатуры) // y=0.8 (введено с клавиатуры
Pascalabc.net вот кусочек программки: // x=3.1 (введено с клавиатуры) // y=0.8 (введено с клавиатуры
Pascalabc.net вот кусочек программки: // x=3.1 (введено с клавиатуры) // y=0.8 (введено с клавиатуры
Pascalabc.net вот кусочек программки: // x=3.1 (введено с клавиатуры) // y=0.8 (введено с клавиатуры
4,7(96 оценок)
Открыть все ответы
Ответ:
averina1
averina1
21.05.2021
Пусть количество флешек равно соответственно a1, a2, a3, a4, причем эти количества уже отсортированы таким образом, что a1≥a2≥a3≥a4.
Рассмотрим худший случай. Выбрали 3 комплекта флешек с максимальным их количеством. a1+a2+a3. После этого добавили одну флешку и получили 100 флешек, среди которых хотя бы одна из наименьшей группы. То есть a1+a2+a3=99 в худшем случае. Значит, a4=113-99=14.
Теперь надо определить наименьшее количество флешек, чтобы гарантированно на руках было 3 вида. Опять же рассмотрим худший случай. Так выбрали флешки, что среди них все флешки первого вида, все флешки второго вида. Но все равно одной флешки третьего вида не хватает. В худшем случае значение a1+a2 должно быть максимально возможным. Казалось бы, есть условие a1+a2+a3=99. Но не стоит забывать про то, что ранее были наложены ограничения на a1, a2, a3, a4: a1≥a2≥a3≥a4. В связи с добавленным позже определением a4=14, ограничение для a3 становится таким: a3≥14. В худшем случае, чтобы максимизировать a1+a2, следует выбрать a3=14. То есть a1+a2=99-14=85. Следовательно, необходимо 85+1=86 флешек, чтобы быть уверенным, что хотя бы три флешки разных видов присутствуют.
4,6(68 оценок)
Ответ:
далина3
далина3
21.05.2021
Веб-дизайнер:Такой специалист занимается созданием сайтов и придумывает уникальные дизайнерские решения для них. Сегодня каждая уважающая себя фирма желает иметь свой Интернет-ресурс, а чтобы он был интересен для пользования, у него должна быть довольно удобная система навигации и интересное эстетическое оформление. Именно эти задачи и стоят перед веб-дизайнерами.

Вид деятельности «Программирование» - аналитик компьютерных систем, системотехник, инженер по автоматизированным системам, программист.
Вид деятельности «Обслуживание компьютерной техники» - IT-специалист (менеджер) , оператор ПК (ЭВМ) , системный интегратор, системный администратор, специалист по защите.
Вид деятельности «Искусство» - дизайнер, веб-дизайнер, фотограф, клипмейкер, фрилансер.
Вид деятельности «Полиграфия» - пейджмейкер, копирайтер, рерайтер, корректор, художественный и технический редактор, верстальщик, оператор компьютерного набора.
Вид деятельности «Офис, организация, предприятие» - секретарь, референт, делопроизводитель, машинистка, бухгалтер, менеджер, консультант.
4,4(43 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ