Нужно какое число будет выведено на экран в результате выполнения этого цикла? i: =7; write('9'); while i< 11 do begin write(i); i: =i+1; end; ответ: ?
//pascal abc.net v3.1 сборка 1219 const n=5; var ar: array[1..n] of real; i,maxi,mini: integer; s,min,max: real; begin randomize; min: =2147483647; max: =-2147483648; writeln('first array: '); for i: =1 to n do begin ar[i]: =random(30); write(ar[i]: 6); if ar[i]> max then begin max: =ar[i]; maxi: =i; end; if ar[i]< min then begin min: =ar[i]; mini: =i; end; s: =s+ar[i]; end; s: =s/n; ar[maxi]: =ar[maxi]-maxi; ar[mini]: =ar[mini]+s; writeln; writeln('final array: '); for i: =1 to n do write(ar[i]: 6); end.
СмыковаДарья1969
15.08.2020
Имеет смысл воспользоваться методом "дихотомии" (деления пополам). если с днем рождения все понятно: в году максимум 366 дней и требуется определить нужный, то непонятно, как быть с загаданным учеником - их условно пронумеровать и спрашивать о номере? поэтому принимаем такое решение. мы делим список учеников на два части (например, написав сведения о каждом на отдельной карточке и разложив эти карточки на две равные кучки по 560/2 = 280 человек в каждой. затем задаем вопрос: загаданный ученик находится в первой кучке? по результатам ответа кучку, содержащую загаданного ученика, снова делим пополам. процесс повторяем пока не останется одна карточка. аналогично поступаем с датами рождения. тогда количество вопросов определится, как степень числа 2, число, не меньшее количества учеников (дней рождения). 2⁹ < 560 < 2¹⁰, поэтому ученик будет угадан максимум за 10 вопросов. 2⁸ < 366 < 2⁹, поэтому день рождения будет угадан максимум за 9 вопросов. в сумме потребуется задать не более 9+10 = 19 вопросов. конечно, можно придумать более продвинутую систему, когда на карточках учеников будут указаны одновременно и даты их рождения, тогда количество вопросов можно снизить.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Нужно какое число будет выведено на экран в результате выполнения этого цикла? i: =7; write('9'); while i< 11 do begin write(i); i: =i+1; end; ответ: ?