Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_МЕТ№1.DOC
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
180.74 Кб
Скачать

Примеры программ обработки массивов

Пример1.

Ввести в ЭВМ массив из 100 чисел. Вывести каждое второе число из массива.

РROGRAM WTR;

VAR

X: ARRAY[1..100] OF REAL;

I: INTEGER;

BEGIN

Writeln('Введите массив из 100 чисел');

FOR I:= 1 TO 100 DO

READ (x[I]);

FOR I:= 1 TO 50 DO

WRITE (x[2*I]);

END.

Пример 2.

Ввести в ЭВМ массив (последовательность) из 100 чисел. Подсчитать количество положительных и отрицательных чисел, их суммы и средние значения.

Алгоритм

1. Ввести числа.

2. Положить количества положительных, отрицательных чисел и суммы = 0

3. Для номера числа от 1 до 100

вычислить суммы и подсчитать количество

4. Вывести суммы, количество и средние.

5. Закончить.

Уточняем

1.1. Для номера числа от 1 до 100

ввести число [номер]

2. Положить количества положительных, отрицательных чисел и суммы =0

3. Для номера числа от 1 до 100

3.1. Если число [номер]>0, то

количество пол.= кол.пол.+1 и

суммапол. = суммапол. + число [номер]

иначе

количество отр.= кол.отр.+1 и

суммаотр. = суммаотр. + число [номер]

4.1 Если кол. пол. > 0, то

Среднее пол.=суммапол./кол.пол.

4.2 Если кол. отр. > 0, то

Среднее отр.=суммаотр./кол.от.

Программа для этого алгоритма будет иметь вид:

PROGRAM ABC;

CONST

N=100;

VAR

X:ARRAY[1..N] OF REAL;

I, KO, KP: INTEGER;

SO, SP, SRO, SRP:REAL;

BEGIN

Writeln('Введите массив из 100 чисел');

FOR I:=1 TO N DO

READ(x[I]);

KO:=0;

KP:=0;

SO:=0;

SP:=0;

FOR I:=1 TO N DO

IF X[I]>=0 THEN

BEGIN

KP:=KP+1;

SP:=SP+X[I]

END

ELSE

BEGIN

KO:=KO+1;

SO:=SO+ X[I]

END;

If KO<>0 Then

SRO:= SO/KO;

If KP<>0 Then

SRP:= SP/KP;

WRITELN(KO, KP, SO, SP, SRO, SRP);

`END.

Особенности алгоритмов и программ с накапливанием

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

1) Сумма вычисляется по формуле

сумма:= cумма + слагаемое

Перед вычислениями начальному значению суммы нужно присвоить ноль.

2) Произведение вычисляется по формуле

произведение := произведение * сомножитель

Перед вычислениями начальному значению произведения нужно присвоить 1.

3) Подсчет количества выполняется по формуле, подобной формуле для вычисления суммы

количество := количество + 1

Начальное значение количества = 0.

Алгоритм нахождения минимума и максимума

Задача 1.

Ввести в ЭВМ последовательность из n чисел x1, х2,..., х[n], n<200. Найти минимум и максимум из них.

При поиске минимума или максимума используется переменная min или max, которой:

1) вначале присваивается значение первого числа из последовательности (x1);

2) начиная со второго числа, производится сравнение этого числа со значением переменной min (или max) и, если число из массива меньше min (больше max), то на место min (max) записывается это число.

Программа для этого алгоритма будет иметь вид:

PROGRAM MINMAX;

CONST

N=200;

VAR

X:ARRAY [1..N] OF REAL;

MIN,MAX:REAL;

I:INTEGER;

BEGIN

{ВВОД ПОСЛЕДОВАТЕЛЬНОСТИ}

Writeln('Введите последовательность чисел');

FOR I:=1 NO N DO

READ(x[i]);

MIN:=X[1];

MAX:=X[1];

FOR I:=2 TO N DO

IF MAX <X[I] THEN

MAX:=X[I]

ELSE

IF MIN > X[I] THEN

MIN:=X[I];

WRITELN ('MIN', MIN,'MAX=', MAX);

END.

В некоторых случаях бывает необходимо не только найти минимальное или максимальное число в последовательности из n чисел, но и запомнить его номер (индекс).

Задача 2.

Найти минимум в последовательности из 100 чисел и номер минимального числа.

В этой задаче необходимо использовать ещё одну переменную: не только min, но и номер – например, imin. Каждый раз нужно запомнить и число, и его индекс. Соответствующая программа может быть представлена в виде:

PROGRAM MINIMUM;

CONST

N=100;

VAR

X:ARRAY[1..N] OF REAL;

MIN:REAL;

I,IMIN: INTEGER;

BEGIN

Writeln('Введите последовательность чисел');

FOR I:=1 TO N DO

READ(x[I]);

MIN := x[1];

IMIN:=1;

FOR I:=2 TO N DO

IF MIN > x[I] THEN

BEGIN

MIN:=x[i];

IMIN:=i;

END;

WRITELN('MIN=', MIN, HOMEP=', IMIN)

END.

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