Пример. 1
Задан одномерный целочисленный массив. Написать программу замены элементов, стоящих на четных местах их квадратами (пользователь программы должен иметь возможность выбрать способ задания массива – случайными числами или путем ввода с клавиатуры). Здесь можно выделить следующие подзадачи: 1) заполнение массива одним из двух способов; 2) просмотр исходного массива; 3) замена элементов по указанному правилу; 4) просмотр полученного массива. В первой задаче можно выделить следующие подзадачи: выбор способа заполнения, заполнение массива выбранным способом. Основная программа: Program Pr_6_1; Uses Crt, U_6_1; Var A: mas; Begin ClrScr; {заполнение массива одним из двух способов} zapolnenie; {вывод заполненного массива на экран} ClrScr; Writeln('Исходный массив'); View(A); {замена элементов, стоящих на четных местах} Zamena(A); {вывод полученного массива на экран } Writeln('Измененный массив'); View(A); ReadKey; End. Процедуры, используемые в этой программе, описаны в модуле U_6_1:
Unit U_6_1; Interface Const N = 7; {количество элементов массива} Type mas = array [1..N] of integer; Procedure View(x: mas) Procedure zapolnenie (var x: mas); Procedure zamena (var x:mas);
Implementation Procedure View (x: mas); {процедура вывода элементов массива х на экран} var i: integer; begin For i:= 1 to N do Write(x[i]:5); writeln; end; Procedure Create_Random (var x: mas); {процедура заполнения массива х случайными числами } var i: integer; begin Randomize; For i:= 1 to N do x[i]:= Random(100)-50; end; procedure Create (var x: mas); {процедура ввода элементов массива х с клавиатуры} var i: integer; begin For i:= 1 to N do begin Write('Введите ', i, ' элемент массива '); Readln(x[i]); end; end; Procedure zapolnenie (var x: mas); var Ch,i: integer; begin {вывод на экран «меню»} Writeln('1-Ввод массива с клавиатуры '); Writeln('2-Инициализация массива случайными числами'); Writeln; Write('Введите номер пункта меню (1 или 2) - '); ReadLn(Ch);
{вызов выбранной процедуры заполнения массива} Case ch of 1: Create (x); 2: Create_Random(x); end; end;
Procedure zamena (var x:mas); {процедура замены элементов} var i:integer; begin i:= 2; while i <= N do begin x[i]:= sqr(x[i]); i:= i + 2; end; end; end.
Протокол выполнения процедуры zamena.
Протокол выполнения программы
Задание 3.1 (6 баллов) Написать программу решения задачи. Указание: использовать процедуры задания массива случайным образом, ввода элементов с клавиатуры, вывода элементов массива на экран; используемые процедуры описать в модуле.
Задание 3.2 (9 баллов) Написать программу решения задачи. Указания: 1. Выполнить процедурную декомпозицию задачи методом пошаговой детализации. 2. Для ввода и вывода массива использовать процедуры, модуля, использованного при решении задания 3.1.
|