только такие значения как true или false могут принимать такие переменные.
sokolowskayaa
10.07.2020
5. “кузнечик” в одной стране жил-был волшебный кузнечик, умеющий прыгать на любое расстояние. а ко- гда он изучил тему «числовые последовательности», то решил прыгать по дороге с нумерованны- ми клетками по придуманному им правилу: 1 2 4 7 11 16 22 29 и так далее, дальше продолжи- те сами. а другой кузнечик решил подкараулить его в какой-нибудь клетке n, чтобы не дать уска- кать в бесконечность. ему, предложите алгоритм, проверяющий, попадет ли первый кузнечик в клетку n? решение: можно догадаться, что каждое n-ное число bn = bn-1 + n – 1, где b1 = 1. можно также догадаться, что каждое число нашей прогрессии bn = 1 + 1 + 2 + 3 + … + n – 1 = 1 + sn , где sn – это сумма арифметической прогрессии с a1=0 и d=1. и по формуле прогрессии получаем: bn = 1 + n(n-1)/2. остается проверить, равно ли введенное n какому-нибудь bn. решаем уравнение: n = 1 + n(n-1)/2, квадратное уравнение: n2 – n + 2 – 2n = 0, d = 1 – 4(2-2n) = 8n – 7, n = (1+sqrt(8n-7))/2 – берем только положительный ответ. получился алгоритм: подставляем n в формулу для n и если n – целое, то кузнечик попадет в клетку с номером n. вопрос только, как проверить, целое ли n. для этого проверяем, достаточно ли мало отклонение его от его округле- ния: если abs( n – round( n ) ) < 0,000000000000001, то n – скорее всего целое. по крайней мере с точностью до 0,000000000000001.
igschuschkov6211
10.07.2020
// pascalabc.net 3.0, сборка 1052 const nstud=100; npred=10; type date=record den: byte; mes: byte; god: integer end; st=record datr: date; famnam: string; gender: 0..1; ball: array[1..npred] of 2..5 end; var ns,np,nd,i,j: byte; r: array[1..nstud] of st; dolg,flagp: boolean; cdate: date; begin write('количество студентов: '); read(ns); write('количество предметов: '); read(np); writeln('вводите данные по каждому студенту'); writeln('в первой строке через пробел дата рождения дд мм '); writeln('во второй строке фамилия, пробел, имя'); writeln('в третьей строке пол (0 - мужской, 1 - женский)'); writeln('в четвертой строке полученные через пробел'); for i: =1 to ns do begin writeln('*** студент ',i,' ***'); with r[i] do begin readln(datr.den,datr.mes,datr.god); readln(famnam); readln(gender); for j: =1 to np do read(ball[j]) end end; { *********** 1 *************** } writeln; writeln('список студентов-задолжников'); nd: =0; for i: =1 to ns do begin with r[i] do begin j: =1; dolg: =false; repeat if ball[j]=2 then begin dolg: =true; inc(nd) end; inc(j) until dolg or (j> np); if dolg then writeln(famnam) end end; if nd=0 then writeln('задолжников нет! '); { *********** 2 *************** } writeln; writeln('введите дату запроса в формате дд, мм, : '); read(cdate.den,cdate.mes,cdate.god); writeln; writeln('список студентов, которым исполнилось 20 лет'); nd: =0; for i: =1 to ns do begin with r[i] do begin flagp: =false; if cdate.god-datr.god> 20 then flagp: =true else if cdate.god-datr.god=20 then begin if cdate.mes> datr.mes then flagp: =true else begin if cdate.mes=datr.mes then flagp: =(cdate.den> =datr.den) end end; if flagp then begin writeln(famnam); inc(nd) end; end end; if nd=0 then writeln('нет студентов, которым исполнилось 20 лет! '); end. тестовое решение: количество студентов: 5 количество предметов: 4 вводите данные по каждому студенту в первой строке через пробел дата рождения дд мм во второй строке фамилия, пробел, имя в третьей строке пол (0 - мужской, 1 - женский) в четвертой строке полученные через пробел *** студент 1 *** 5 10 1996 иванов иван 0 4 3 5 5 *** студент 2 *** 12 8 1997 петров петр 0 3 2 3 4 *** студент 3 *** 9 10 1998 сидорова наталья 1 3 4 4 2 *** студент 4 *** 6 9 1994 козлова ирина 1 5 4 4 5 *** студент 5 *** 12 3 1995 тарасов константин 0 3 5 5 4 список студентов-задолжников петров петр сидорова наталья введите дату запроса в формате дд, мм, : 2 11 2015 список студентов, которым исполнилось 20 лет козлова ирина тарасов константин
только такие значения как true или false могут принимать такие переменные.