Даны целое число n и массив, содержащий n элементов. Элементами массива являются записи, которые хранятся в текстовом файле и компонентами которого являются а) фамилии б) имена потребителей электроэнергии в) предыдущее показание счетчика, г) последнее показание счетчика. Выведите фамилии абонентов, потребление электроэнергии которых находится в заданном диапазоне [a,b]. Нарисуйте блок-схему и напишите программу на языке Turbo Pascal.
Ответы
Ответ:
Блок-схема алгоритма может выглядеть следующим образом:
Считывание целого числа n и массива, содержащего n элементов.
Считывание значений a и b.
Цикл for, в котором итератор проходит по всем элементам массива.
Внутри цикла проверка условия, находится ли потребление электроэнергии абонента в диапазоне [a,b]. Если условие истинно, то вывод фамилии абонента.
Конец цикла.
Программа:
const
N = 100; // максимальное количество записей
type
TSubscriber = record
surname: string[20];
name: string[20];
previous_reading: integer;
current_reading: integer;
end;
var
subscribers: array[1..N] of TSubscriber;
n: integer; // фактическое количество записей
a, b: integer; // диапазон энергопотребления
begin
// читаем массив записей
readln(n);
for i := 1 to n do begin
readln(subscribers[i].surname, subscribers[i].name, subscribers[i].previous_reading, subscribers[i].current_reading);
end;
// считываем диапазон энергопотребления
readln(a, b);
// выводим фамилии абонентов, энергопотребление которых находится в диапазоне [a,b]
for i := 1 to n do begin
if (subscribers[i].previous_reading < subscribers[i].current_reading) and (subscribers[i].current_reading - subscribers[i].previous_reading >= a) and (subscribers[i].current_reading - subscribers[i].previous_reading <= b) then begin
writeln(subscribers[i].surname);
end;
end;
end.