Одномерные массивы

Задача 1. Количество и сумма элементов массива, принадлежащих интервалу

Найдите сумму и количество элементов массива, попавших в интервал [a; b]. Границы интервала вводятся с клавиатуры.

Решение

Пусть переменная qty содержит количество элементов, попавших в заданный интервал, а переменная sum сумму этих элементов. В цикле будем проверять каждый элемент на то, что его значение одновременно больше либо равно нижней границе диапазона и меньше или равно верхней. Если это так, то элемент принадлежит заданному интервалу и его значение следует добавить к переменной sum, а qty увеличить на 1.

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

const N = 20;
var
    arr: array[1..N] of integer;
    i, qty: byte;
    a, b, c, sum: integer;
begin
    randomize;
    for i:=1 to N do begin
        arr[i] := random(100)-50;
        write(arr[i]:4);
    end;
    writeln;
    write('Интервал: ');
    readln(a, b);
    if a > b then begin
        c := a;
        a := b;
        b := c;
    end;
    qty := 0;
    sum := 0;
    for i:=1 to N do 
        if (arr[i] >= a) and (arr[i] <= b) then begin
            qty := qty + 1;
            sum := sum + arr[i];
        end;
    writeln('Количество: ', qty);
    writeln('Сумма: ', sum);
end.

Пример выполнения кода:

 -25 -28  41  35  28  33 -46  35   2 -35 -49  49 -31   5  34 -46 -32 -40 -14   5
Интервал: 5 -10
Количество: 3
Сумма: 12

Задача 2. Удалить из массива четные элементы

В одномерном массиве удалить все четные элементы и оставить только нечетные.

Решение

Данную задачу можно решить несколькими способами.

Способ 1. Скопировать в другой массив только нечетные элементы.

const
    N = 20;
var
    a, b: array[1..N] of integer;
    i, m: byte;
begin 
    randomize;
    for i:=1 to N do begin 
        a[i] := random(40)+10;
        write(a[i]:3);
    end;
    writeln;
 
    m := 0;
    for i:=1 to N do
        if a[i] mod 2 <> 0 then begin
            m := m + 1;
            b[m] := a[i];
        end;
 
    for i:=1 to m do begin 
        write(b[i]:3);
    end;
    writeln;
end.

Задача 3.

Напишите программу для решения следующей задачи. Камера наблюдения регистрирует в автоматическом режиме скорость проезжающих мимо неё автомобилей, округляя значения скорости до целых чисел. Необходимо определить минимальную зарегистрированную скорость автомобиля. Если скорость хотя бы одного автомобиля была больше 80 км/ч, выведите «YES», иначе выведите «NO».

Программа получает на вход число проехавших автомобилей N (1 ≤ N ≤ 30), затем указываются их скорости. Значение скорости не может быть меньше 1 и больше 300.Программа должна сначала вывести минимальную скорость, затем YES или NO.

Пример работы программы:

Входные данныеВыходные данные
4
74
69
63
96
63
YES
Обновлено: Декабрь 23, 2019 — 11:46 дп

Добавить комментарий