Ответы на вопрос:
Целочисленная арифметика хороша тем, что вычисления в ней точны. но взамен она требует для представления чисел достаточного большого количества байт и не случайно от переменных типа byte и integer, которые в памяти занимали 1 и 2 байта соответственно, создатели трансляторов с языка паскаль пришли к четырехбайтному longint, а впоследствии и к восьмибайтному int64. максимальное число, которое можно представить в longint, равно 2 147 483 647, а в int64 оно равно 9 223 372 036 854 775 807. много ли это в применении к нашей ? нам надо найти и вывести произведение четырехзначных чисел, значение которых не превышает 5000. допустим, что все они равны 5000 и тогда количество членов в таком произведении может быть оценено при несложного расчета. итак, мы можем получить произведение максимум пяти таких чисел. а если использовать longint - вообще всего два числа: но это по верхнему пределу. по нижнему, при значении, равном 1000, эти оценки увеличиваются до 6 и 3 чисел соответственно (достаточно количество разрядов в максимально представимом числе разделить на 3). что показывают эти расчеты? всего лишь непригодность стандартной целочисленной арифметики языка паскаль (а также других традиционных алгоритмических языков) для решения поставленной в общем случае. беда еще и в том, что большинство трансляторов строят программу так, что в ней переполнение разрядной сетки (т.е. выход числа за отведенный ему диапазон представления) по умолчанию не контролируется. другими словами, есть риск получить совершенно неверный результат и даже не подозревать об этом! на может прийти арифметика с плавающей точкой, пригодная для отображения действительно огромных чисел. но у неё есть свой недостаток - она неточна. в языке паскаль тип double может оперировать числами до приблизительно , а вот количество точных цифр при этом составит 15-16. но даже такая точность выше, чем дает стандартный тип longint. на основании всего вышеизложенного и с учетом того, что тип int64 реализован далеко не во всех версиях языка паскаль, можно принять следующий алгоритм: 1. получаем искомые числа, генерируя не более, скажем, 50 элементов. я считаю, что для любого разумного решения такого количества чисел будет достаточно (мы просто не будем допускать, чтобы к превышало 50). 2. нелепый критерий отбора чисел (квадрат первой цифры меньше квадрата последней цифры числа) заменим разумным. ведь цифра - суть однозначное число, а если квадрат одного числа меньше квадрата второго, то и сами числа находятся в таком же соотношении, поэтому зачем возводить в квадрат? . итак, критерием отбора будет "первая цифра меньше последней цифры числа". 3. находим произведение элементов массива в представлении double. var i,n,k: integer; p: double; begin randomize; write('введите количество чисел к (1..50): '); readln(k); if (k< 1) or (k> 50) then write('неверное к') else begin p: =1; writeln('отобранные случайные числа на интервале [1000; 5000]'); for i: =1 to k do begin n: =random(4501)+500; { диапазон [500; 5000] } if n> =1000 then if (n div 1000)< (n mod 10) then begin write(n: 5); p: =p*n end; end; writeln; if p> 1 then writeln('произведение отобранных чисел равно ',p) else writeln('к сожалению, отобранных чисел нет') end end. тестовые решения: введите количество чисел к (1..50): 15 отобранные случайные числа на интервале [500; 5000] 3208 4925 1279 2528 1637 4979 3536 4416 2116 3655 произведение отобранных чисел равно 5.02832546192399e+34 введите количество чисел к (1..50): 3 отобранные случайные числа на интервале [500; 5000] 3385 1177 произведение отобранных чисел равно 3984145 введите количество чисел к (1..50): 1 отобранные случайные числа на интервале [500; 5000] 3838 произведение отобранных чисел равно 3838 введите количество чисел к (1..50): 1 отобранные случайные числа на интервале [500; 5000] к сожалению, отобранных чисел нет
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
lili2003love1213.11.2022 08:21
-
Gucci9919.10.2021 16:29
-
Dizzy23426.11.2020 02:17
-
Kirill081219.05.2021 04:02
-
НастюшаПоможет11.06.2022 13:15
-
dmitrijcazovo8107.10.2021 13:50
-
Слон14501.06.2021 06:24
-
Саша03061225.04.2022 10:05
-
elenasamsonova125.12.2020 03:29
-
нмрмгштщ21.11.2020 11:04
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.