Program fff;
var c: Char; n, u, sum: Integer; begin write('Кол-во цифр для ввода: '); readln(n); for u := 1 to n do begin readln(c); sum := sum + Ord(c)-48; end; writeln('Кол-во введёных цифр = ', n); writeln('Сумма введёных цифр = ', sum);end.
1. Выделение числа, которое является степенью двойки. Определили, что числами, которые являются степенью двойки, будут числа 1, 2, 4, 8, 16 и т.д.
2. Определение искомых чисел, отвечающих условию задачи - остаток от деления числа на 17 должен быть равен нулю, остаток от деления числа на 10 должен быть равен 9 (девяти).
В данной задаче, получается, есть три модуля, которые необходимо реализовать.
Первый - определение числа - степени двойки.
Второй - определение искомых чисел и их подсчет.
Третий - модуль, который позволяет объединить оба модуля в одно целое.
Видно, что первый и второй модули - самостоятельны и независимы друг от друга. Поэтому, первый модуль можно вынести в самостоятельный блок алгоритма, которому и дали имя st_dv.
Вспомогательный алгоритм(подпрограмма) должен имеет уникальное имя и должен быть расположен под основным алгоритмом.
При реализации задач могут применяться несколько вспомогательных алгоритмов (подпрограмм).
Правила разработки алгоритма решения задачи:
I. Алгоритм решения задачи необходимо разбить на отдельные подзадачи и каждую подзадачу необходимо решать отдельно. Для нашего примера первый модульреализован в виде вспомогательного алгоритма st_dv, в который передается число, вводимое с клавиатуры. А вспомогательный алгоритм (далее, подпрограмма), проверяет: является ли число степенью двойки.
3 кита разработки вспомогательных алгоритмов
1. Вспомогательный алгоритм (в отличие от основного) обязательно должен иметь имя.
2. Тип возвращаемого значения должен совпадать с типом переменной в основном алгоритме.
3. Во вспомогательный алгоритм данные передаются посредством переменных, следовательно, в описании вспомогательного алгоритма должно быть указано такое же количество переменных, что и в имени вызываемой функции в основном алгоритме.
1) - 1 (=12)
2) - 3 (=11)
3) - 5 (=7)
4) - 2 (=6 )
5) - 4 (=5 в дес)
Есть много решение этой задачи. Вот моё.
program n_1;var a:real;beginread(a);a:= a / 2;writeln(a,' ',a);end.
Begin
writeln(' *');
writeln(' * *');
writeln(' * *');
writeln(' * *');
writeln(' * * *');
writeln(' * *');
writeln('*************');
writeln(' * *');
writeln(' * ***** *');
writeln(' * * * * *');
writeln(' * ***** *');
writeln(' ***********');
writeln('Фамилия');
end.