Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MET1.doc
Скачиваний:
18
Добавлен:
16.11.2019
Размер:
1.02 Mб
Скачать

Тема № 6 Разработка и отладка программ с использованием структурированных типов данных – одномерных массивов

Студенты должны изучить правила использования одномерных массивов, а также уметь разрабатывать алгоритмы и методы решения поставленной задачи.

При решении математических, экономических и технических задач часто используются упорядоченные наборы данных, например таблицы, последовательности чисел, различные списки. Кроме того, в векторной алгебре и математической физике широко применяются такие понятия матричного исчисления, как вектор и матрица. Программными аналогами вектора (матрицы-столбца или матрицы-строки) является одномерный массив; матрицы - двухмерный или многомерный массив. Массив - это упорядоченный набор данных одного типа, имеющих одно символическое имя. Массив состоит из элементов. Каждый элемент массива описывается символическим именем и индексом в квадратных скобках, например:

T[1], T[I], T[2*I].

Индекс может быть целой константой, переменной целого типа или арифметическим выражением целого типа.

В Паскаль-программе массивы описываются в разделе типов TYPE или разделе переменных VAR следующим образом:

TYPE имя типа = ARRAY[n1..n2] OF базовый тип;

VAR имя переменной №1: имя типа;

имя переменной №2: ARRAY[к1..к2] OF базовый тип;

где n1, к1 и n2, к2 – соответственно начальные и конечные значения индексов массивов.

Примеры описания массивов:

VAR T:ARRAY[1..365] OF INTEGER;

ST:ARRAY[1..50] OF CHAR;

A:ARRAY[1..10] OF REAL;

B:ARRAY[1..8] OF STRING;

или

TYPE MAS = ARRAY[1..365] OF INTEGER;

VAR T:MAS;

В первой строке тип MAS определяется в виде массива с 365 "элементами" целого типа. Переменная T имеет тип MAS, построенный на базовом типе ARRAY[1..365] OF INTEGER;.

Если в задании рассматривается N элементов массива, то возможна следующая конструкция:

CONST N=50;

TYPE RY= ARRAY[1..N] OF REAL;

VAR D:RY;

Если A и B являются именами массивов одного типа, то их можно описать следующим образом:

TYPE MAS=ARRAY[1..20] OF INTEGER;

VAR A, B : MAS;

Ввод одномерных массивов

Массивы вводятся с помощью следующего оператора:

FOR I:=1 TO N DO READ(X[I]);

где I  порядковый номер элемента массива.

Вывод одномерного массива

Распечатать массив можно в строку или следующим образом:

FOR I:=1 TO N DO WRITE(X[I],' ');

или таким образом

FOR I:=1 TO N DO WRITE(X[I]:6:3); .

Элементы массива можно распечатать в столбик:

FOR I:=1 TO N DO WRITELN(X[I]);

Примеры.

1. Вычислите произведение 10 элементов массива A вещественного типа.

PROGRAM MASSIV1;

VAR P:REAL; I:INTEGER;

A:ARRAY [1..10] OF REAL;

BEGIN

P := 1; WRITELN(’Введите массив А’);

FOR I: = 1 TO 10 DO

BEGIN READ(A[I]); P: =P*A[I]; END;

WRITELN (’P= ’, P:10:4 );

END.

2. Даны n натуральных чисел a1, a2, ... an. Определите среднее арифметическое членов последовательности, которые кратны 3 и не кратны 5.

PROGRAM SR;

USES CRT;

VAR A:ARRAY[1..50] OF INTEGER;

I,N,K:INTEGER;

S,SA:REAL;

BEGIN

CLRSCR;

WRITELN(‘Введите N’);

READLN(N);

WRITELN(‘Введите элементы массива A’);

FOR I:=1 TO N DO READ(A[I]);

WRITELN;

S:=0; K:=0;

FOR I:=1 TO N DO

BEGIN

IF (A[I] MOD 3=0) AND (A[I] MOD 5<>0) THEN

BEGIN

S:=S+A[I]; K:=K+1;

END; END;

IF K=0 THEN WRITELN(‘ Нет решения’)

ELSE BEGIN

SA:=S/K;

WRTELN(‘SA=‘,SA:12:4); END; END.

3. Задан массив. Расставьте все элементы по убыванию.

При сортировке по убыванию ищется и переставляется наибольшее значение массива. Другие алгоритмы сортировки приведены в приложении.

PROGRAM PR;

USES CRT;

CONST N=18

VAR X:ARRAY[1..N] OF INTEGER;

I,K,R,MAX,IMAX:INTEGER;

BEGIN

CLRSCR;

WRITELN(‘Введите элементы массива X’);

FOR I:=1 TO N DO READ(X[I]);

{Сортировка}

FOR K:=1 TO N-1 DO

BEGIN { K  количество перестановок}

MAX:=X[K]; IMAX:=K;

{IMAX  порядковый номер максимального элемента }

FOR I:=K+1 TO N DO

BEGIN

IF X[I]>MAX THEN

BEGIN

MAX:=X[I];

IMAX:=I;

END; END;

{R  вспомогательная переменная}

{Перестановка элементов}

R:=X[K];

X[K]:=MAX;

X[IMAX]:=R;

END;

WRITELN;

WRITELN(‘Упорядоченный массив’);

FOR I:=1 TO N DO WRITE(X[I],’ ‘) ;

END.

Варианты заданий

  1. Дан массив С(10). Найдите отношение S/P, где , а .

  2. Дан массив А(n). Найдите сумму положительных элементов массива.

  3. Дан массив В(n). Определите количество отрицательных элементов массива.

  4. Дан массив А(20). Все отрицательные элементы массива замените на их квадраты. Остальные элементы оставьте без изменения.

  5. Дан массив С(m). Найдите среднее арифметическое положительных элементов массива.

  6. Даны два целочисленных массива: М(10) и К(10). Проверьте совпадение соответствующих элементов массивов. Если они совпадают, то выведите совпадающее значение, если не совпадают, то сделайте соответствующее сообщение.

  7. Дан массив А(m). Найдите минимальный элемент массива и его индекс.

  8. Дан массив Т(n). Подсчитайте количество элементов массива, которые по модулю меньше 1.

  9. Дан массив целых чисел А(12). Найдите количество и сумму тех элементов данного массива, которые делятся на 5 и не делятся на 7, т.е. исключите, например, элемент со значением 35.

  10. Дан массив А(20). Получите удвоенную сумму всех положительных элементов массива.

  11. Дан массив В(n). В массиве все отрицательные элементы увеличьте на 0,5, а все неотрицательные замените на 0,1.

  12. Найдите сумму элементов одномерного массива размером n. Разделите каждый элемент исходного массива на полученное значение. Результат получите в том же массиве.

  13. Решите уравнение АХ = В для пяти пар значений А и В, заданных в виде двух массивов. Результат поместите в массив Х.

  14. Вычислите скалярное произведение векторов (одномерных массивов) Х(8) и Y(8). Скалярное произведение вычисляется по формуле .

  15. Определите среднее значение элементов массива Х(20). Найдите индекс элемента массива, наиболее близкого к среднему значению.

  16. Задан массив С(10). Сформируйте два массива из пяти элементов каждый, включая в первый массив элементы исходного массива с четными индексами, а во второй - с нечетными.

  17. Дан массив А(n). Получите сумму положительных и отрицательных элементов массива.

  18. Дан целочисленный массив С(n). Замените все элементы массива, большие семи, числом 7. Вычислите количество таких элементов.

  19. Дан массив С(25). Получите массив В(25), который отличается от исходного тем, что все нечетные элементы удвоены.

  20. При заданных массивах Х(10) - абсцисс, Y(10) - ординат точек плоскости XOY , подсчитайте, сколько из них находится в пределах круга с заданным радиусом R и центром в начале координат (0,0).

  21. При заданных массивах Х(15) - абсцисс, Y(15) - ординат точек плоскости XOY , определите, сколько из них находится в 1, 2, 3, 4 квадрантах (четвертях) плоскости.

  22. При заданных массивах А(8), В(8) сформируйте массив С(8) по правилу Ci = max (Ai, Bi), i = 1, 2, ... , 8. Подсчитайте, сколько элементов Сi получили значение Ai.

  23. Найдите наибольшее значение (Xi + Yi ) для массивов X(15) и Y(15).

  24. Найдите и запишите вместо X(1) - наибольший элемент, а вместо X(2) - наименьший элемент массива Х(20).

  25. Для массива А(n) вычислите наибольшее и наименьшее значения модуля разности между соседними элементами.

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