Категория C2 • задача №4
Условие задачи
Дано:
целочисленный массив из 30 элементов. Элементы массива могут принимать произвольные значения. С клавиатуры водится целое число Х. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.
Реализовать:
опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит наименьший номер элемента массива, равного Х, или сообщение, что такого элемента нет.
Решение
I этап: выбор основного языка программирования
Среди четырех представленных языков (Pascal, Basic, чистый C, Естественный язык), лично мне, максимально импонирует язык программирования высокого уровня - Pascal.
Опишу основные преимущества (на мой субъективный взгляд) языка программирования Pascal перед остальными языками, представленными в данном задании:
понятная лексика, то есть все ключевые слова, использующиеся в языке программирования, являются понятными;
хорошо продуманная внутренняя структура программы (группировка по разделам: раздел подключения модулей, раздел декларации констант, раздел декларации переменных, раздел описания пользовательских типов данных);
поддержка большого количества стандартных типов данных (например, в отличие от всех представленных в данном задании языков, язык Pascal имеет штатную поддержку такого типа данных как "Множество").
II этап: алгоритмизация поставленной задачи
Поставленная задача подразумевает следующую обработку: для примера рассмотрим одномерный вещественный массив, состоящий из десяти элементов, являющихся целыми случайными числами:
12 | 46 | -9 | 14 | 29 | -7 | 14 | 14 | -120 | 63 | значение |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | индекс |
Допустим, пользователь ввел для поиска значение равное 14. Необходимо начать сканирование всех элементов массива, начиная с первого элемента. Если текущее значение элемента массива будет равно 14, то дальнейший поиск станет нецелесообразным и его нужно прекратить. Если в результате сканирования были просмотрены все элементы и, не было найдено совпадения, то следует делать вывод о том, что искомый элемент физически отсутствует в заданном массиве.
Для данного массива, поиск прекратится на первом встретившемся элементе, имеющем значение равное 14:
12 | 46 | -9 | 14 | 29 | -7 | 14 | 14 | -120 | 63 | значение |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | индекс |
В условии было сказано, что нужно детерминировать номер элемента, следовательно, ответом в данном случае является число равное четыре (так как именно четвертый элемент имеет искомое значение равное 14).
III этап: реализация программы
Реализуем программу на языке программирования высокого уровня Pascal 7.0 с подробными комментариями.
const
{нетипизированная константа, отвечающая за количество элементов исходного массива}
N = 30;
{раздел объявления переменных}
var
{одномерный массив из 30 элементов целочисленного типа}
a : array[1..N] of integer;
{счетчик циклов}
i : integer;
{отвечает за минимальный номер элемента, имеющего значение, совпадающее с искомым}
j : integer;
{искомое значение}
x : integer;
{начало главного блока программы}
begin
{заполнение массива пользовательскими целыми числами вводом с клавиатуры}
for i := 1 to N do
readln(a[i]);
{диалог пользователю о предстоящем вводе целого числа для поиска}
write('Введите значение х для поиска: ');
{считывание искомого значения с клавиатуры}
readln(x);
{вставка пустой строки для повышения читабельности}
writeln;
{так как поиск еще не начинался, то можно занулить переменную, отвечающую за минимальный номер искомого элемента в массиве}
j := 0;
{отвечает за номер текущего элемента в массиве}
i := 1;
{пока не просмотрены все элементы массива и одновременно с этим не найден элемент, имеющий значение равное искомому, начинаем поиск элемента}
while((i <= N) and (j = 0)) do
begin
{если значение текущего элемента массива равно искомому значению, то}
if(a[i] = x) then
{запоминаем номер текущего элемента}
j := i;
{переход к следующему элементу массива}
i := i + 1;
end;
{означает, что элемент, имеющий значение, совпадающее с искомым значением, не обнаружен}
if(j = 0) then
writeln('Элемента равного х не обнаружено!')
else
{выпечатывается на дисплей наименьший номер элемента массива, равный Х}
writeln(j);
{финализирующий оператор программы}
end.
Категория C2 • задача №4
Остальные решения из билета №4 для подготовки к ЕГЭ по информатике 2013
Условие задачи (наведите курсор мыши на ссылку) |
Аудиовизуальное решение |
Мультимедийная видеопрезентация |
Решение в формате слайд-шоу |
Текстовое решение |
---|
Комментарии