kamimoza
?>

Какой результат будет после выполнения следующей программы? var s, d : real; i : integer; begin s: =0 for i: =1 to 49 do begin d: =i*(i+1); s: =s+1/d; end; writeln('s=', s); end. a)s=0, 02 b)s=0, 98 c)s=0, 0002 d)s=1

Информатика

Ответы

Yurevna_Kharkchinov1302
Подобные ("значение, которое получат "), когда для получения ответа надо выполнять цикл значительное количество раз в реальном программировании не имеют никакого смысла.  всегда можно сделать трассировку и посмотреть. ниже - пример такой трассировки. var   s, d: real;   i: integer; begin   writeln('трассировка начата');   s : = 0;   for i : = 1 to 49 do   begin       d : = i * (i + 1);       s : = s + 1 / d;       writeln('i=', i: 2, ', d=', d: 4, ', s=', s: 8: 6);   end;   writeln('трассировка завершена');   writeln('s=', s); end. трассировка начата i= 1, d=    2, s=0.500000 i= 2, d=    6, s=0.666667 i= 3, d=  12, s=0.750000 i= 4, d=  20, s=0.800000 i= 5, d=  30, s=0.833333 i= 6, d=  42, s=0.857143 i= 7, d=  56, s=0.875000 i= 8, d=  72, s=0.888889 i= 9, d=  90, s=0.900000 i=10, d= 110, s=0.909091 i=11, d= 132, s=0.916667 i=12, d= 156, s=0.923077 i=13, d= 182, s=0.928571 i=14, d= 210, s=0.933333 i=15, d= 240, s=0.937500 i=16, d= 272, s=0.941176 i=17, d= 306, s=0.944444 i=18, d= 342, s=0.947368 i=19, d= 380, s=0.950000 i=20, d= 420, s=0.952381 i=21, d= 462, s=0.954545 i=22, d= 506, s=0.956522 i=23, d= 552, s=0.958333 i=24, d= 600, s=0.960000 i=25, d= 650, s=0.961538 i=26, d= 702, s=0.962963 i=27, d= 756, s=0.964286 i=28, d= 812, s=0.965517 i=29, d= 870, s=0.966667 i=30, d= 930, s=0.967742 i=31, d= 992, s=0.968750 i=32, d=1056, s=0.969697 i=33, d=1122, s=0.970588 i=34, d=1190, s=0.971429 i=35, d=1260, s=0.972222 i=36, d=1332, s=0.972973 i=37, d=1406, s=0.973684 i=38, d=1482, s=0.974359 i=39, d=1560, s=0.975000 i=40, d=1640, s=0.975610 i=41, d=1722, s=0.976190 i=42, d=1806, s=0.976744 i=43, d=1892, s=0.977273 i=44, d=1980, s=0.977778 i=45, d=2070, s=0.978261 i=46, d=2162, s=0.978723 i=47, d=2256, s=0.979167 i=48, d=2352, s=0.979592 i=49, d=2450, s=0.980000 трассировка завершена s=0.98 в исходном тексте программы была синтаксическая ошибка: после оператора s: =0 отсутствовала точка с запятой, на что немедленно указал компилятор. практически смысл имеет "трассировка на бумаге" для нескольких выполнений тела цикла с тем, чтобы убедиться в правильности работы алгоритма. и не более того. анализ программы показывает, что она вычисляет сумму вида в книге "интегралы и ряды" м.прудников и м,: наука, 1981 на стр. 601 приводится формула 4.1.4.2 итак, сумма может быть легко вычислена для любого количества повторений цикла. нужно ли вообще в таких случаях писать программу? это был урок для делающих первые шаги в увлекательном мире программирования.
mishamedbrat
Два  ,  дисклеймера, так сказать. 1)  алгоритм  простой как пробка. я практически уверен что можно быстрее. 2)  язык  не указан,  хорошо бы использовать c, но в  c всегда было  весело с динамическими  массивами,  так что perl.  если что — переведёте,  perl  неплохо читается. use  strict; my  @array; my  $num = < > ; #input for  (my  $i = 2; $num >   1; $i++) {         if $num % $i)) {                 push @array, ($i);               $num /= i;       } } результат  лежит в массиве  @array.
LIN1022
Хосспаде  иегове,  да научитесь же вы язык  указывать!   perl. 2. @array;   #формат  ввода  не задан, будем считать что он уже заполнен. $min =  $array[0]; $max = $array[0]; for  $i  (@array)  {       $min  = $i  if  ($i  < $min);       $max = $i if ($i > $min); } %hash = map {$_ => 1} @array; for  $i  in ($min..$max)  {       print  "$i  "  if $hash{$i})); } 3. use  quantum: : superpositions;   #модуль  для квантовых вычислений, жутко удобная штука. @primes; $n  = < > ; push  @primes, ($i)  if  ($i  % all(2..sqrt($i)+1) ! = 0) i for  $i (2..$n); #ответ  в массиве @primes. 4.  на  этот вопрос я  не так давно  отвечал, ну ладно. $n  =  < > ; @multipliers; for  $i  (2..$n)  {       if $n % $i)) {               push @multipliers, ($i);               $n /= i;         } } #ответ  в  массиве  @multipliers. а  теперь укажите-таки язык и я,  если с этим  языком знаком напишу  нормальный,  не извращённый  ответ.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Какой результат будет после выполнения следующей программы? var s, d : real; i : integer; begin s: =0 for i: =1 to 49 do begin d: =i*(i+1); s: =s+1/d; end; writeln('s=', s); end. a)s=0, 02 b)s=0, 98 c)s=0, 0002 d)s=1
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

markitandl
Platon
Klochkov malakhov1974
Probitbiz6
Chuhnin195107364
silviya
Aleksandrova Zhanna1250
Volkov
propercarwashes275
Михайловна991
Salko17
kirillprotopopov1
gorodof4292
utburt