Procedure astsquare(n: integer); var i, j: integer; begin for i : = 1 to n do begin for j : = 1 to n do write('*'); writeln(); end; end; { для теста: begin astsquare(4); end. программа выведет 16 звёздочек: **** **** **** **** }
pravovoimeridian
21.12.2020
Попытка поиска выигрышной стратегии может быть сделана при метода, получившего название "бэкрекинг" (backtracking - обратное прослеживание). рассматриваем финальную позицию для второго студента. у него должно оставаться от 1 до 4 карточек, чтобы он мог их все забрать и не оставить карточек первому студенту. следовательно, у первого студента должно быть ровно 5 карточек. забрав от 1 до 4 карточек, он оставит второму студенту как раз требуемое количество карточек. чтобы у первого студента осталось 5 карточек, второй студент должен иметь от 6 до 9 карточек, т.е. первый студент для этого должен делать выбор из 10 карточек. и так далее. выигрышная стратегия второго студента состоит в том, чтобы предоставлять первому студенту количество карточек, кратное 5. но исходное количество карточек равно 20; это число кратно 5, следовательно второй студент всегда выигрывает, применяя описанную стратегию (она же - алгоритм).
федороа
21.12.2020
// pascalabc.net 3.2, сборка 1407 от 18.03.2017 // внимание! если программа не работает, обновите версию! function geron(a,b,c: real): real; // возвращает площадь треугольника со сторонами a,b,c begin var p: =(a+b+c)/2; // полупериметр result: =sqrt(p*(p-a)*(p-b)*(p-c)) end; function sp(ab,bc,ca,ad,bd,cd: real): real; // возвращает площадь полной поверхности пирамиды begin result: =geron(ab,bc,ca)+geron(ab,ad,bd)+geron(bc,bd,cd)+ geron(ca,cd,ad) end; procedure vvod(var ab,bc,ca,ad,bd,cd: real); // ввод значений ребер begin writeln('введите значения ребер пирамиды'); write('ребра основания- ab,bc,ca: '); read(ab,bc,ca); write('боковые ребра- ad,bd,cd: '); read(ad,bd,cd) end; begin var ab1,bc1,ca1,ad1,bd1,cd1: real; vvod(ab1,bc1,ca1,ad1,bd1,cd1); var sp1: =sp(ab1,bc1,ca1,ad1,bd1,cd1); var ab2,bc2,ca2,ad2,bd2,cd2: real; vvod(ab2,bc2,ca2,ad2,bd2,cd2); var sp2: =sp(ab2,bc2,ca2,ad2,bd2,cd2); var d: =sp1-sp2; if d> 0 then writeln('площадь sполн 1й пирамиды больше на ',d) else if d< 0 then writeln('площадь sполн 2й пирамиды больше на ',-d) else writeln('площади sполн пирамид равны'); end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Напишите процедуру, которая принимает параметр-натуральное число n и выводит на экран квадрат из звездочек со стороной n