Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб.раб.3.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
207.87 Кб
Скачать

Лабораторная работа № 3 (массивы) (4 часа)

Цели: формирование навыка использования в программах массивов данных; развитие умения выполнения декомпозиции задачи.

Пример. 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.

действия

x

i

i<=N

передача в процедуру аргумента x

Индекс

1

2

3

4

5

6

7

Значение

9

7

5

8

1

3

6

i := 2;

2

i <= N

Да

x[i] := sqr(x[i]);

Индекс

1

2

3

4

5

6

7

Значение

9

49

5

8

1

3

6

i := i + 2;

4

i <= N

Да

x[i] := sqr(x[i]);

Индекс

1

2

3

4

5

6

7

Значение

9

49

5

64

1

3

6

i := i + 2;

6

i <= N

Да

x[i] := sqr(x[i]);

Индекс

1

2

3

4

5

6

7

Значение

9

49

5

8

1

9

6

i := i + 2;

8

i <= N

Нет

передача в основную программу значения x

Протокол выполнения программы

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]