СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Преобразование элементов массива и поиск элементов с заданными свойствами (Pascal).

Категория: Информатика

Нажмите, чтобы узнать подробности

Упражнение 1

Составьте программу, которая формирует массив из шестнадцати случайных чисел от -20 до 20 и:

А) находит элементы с нулевыми значениями;

Б) находит индексы чётных элементов;

В) подсчитывает количество отрицательных элементов;

Просмотр содержимого документа
«Преобразование элементов массива и поиск элементов с заданными свойствами (Pascal).»

Преобразование элементов массива

Коротко о главном:

  • При работе с массивами можно выполнять следующие преобразования элементов: изменять значения элементов в зависимости от выполнения некоторых условий, менять местами элементы в массиве.

  • При обмене местами элементов массива используют дополнительную перемену (буфер) с целью временного хранения заменяемого элемента.

Упражнение 1

Составьте программу, которая осуществляет преобразование единиц измерения физических величин:

А) значения скорости, измеренные в км/ч, преобразуются в значения, измеренные в м/с (1м/с = 3,6 км/ч);

Ответ:

Var A: array[1..6] of integer;

i: integer;

Begin

writeln ('Введите значения скорости, измеренные в км/ч, через пробел');

for i:=1 to 6 do

read (A[i]);

writeln ('скорость в м/с');

for i:=1 to 6 do

begin

A[i]:=round(A[i]/3.6); {преобразование км/ч в м/с}

write (A[i],' '); {вывод результата}

end;

End.

Результат работы программы может выглядеть так:

Введите значения скорости, измеренные в км/ч, через пробел

60 90 100 70 120 80

скорость в м/с

17 25 28 19 33 22

Б) значения мощности, измеренные в лошадиных силах, преобразуются в значения, измеренные в киловаттах (1 л.с.= 0,735 кВт);

Ответ:

Var A: array[1..6] of integer;

i: integer;

Begin

writeln ('Введите значения мощности, измеренные в лошадиных силах, через пробел');

for i:=1 to 6 do

read (A[i]);

writeln ('мощность в киловатах:');

for i:=1 to 6 do

begin

A[i]:=round(A[i]*0.735); {преобразование мощности в кВт}

write (A[i],' '); {вывод результата}

end;

End.

Результат работы программы может выглядеть так:

Введите значения мощности, измеренные в лошадиных силах, через пробел

122 61 103 259 163 204

мощность в киловатах:

90 45 76 190 120 150


В) значения давления, измеренные в миллиметрах ртутного столба, преобразуются в значения, измеренные в килопаскалях (1 мм.рт. ст. = 0,133 кПа).

Ответ:

Var A: array[1..6] of integer;

i: integer;

Begin

writeln ('Введите значения давления, измеренные в миллиметрах ртутного столба, через пробел');

for i:=1 to 6 do

read (A[i]);

writeln ('давление в килопаскалях:');

for i:=1 to 6 do

begin

A[i]:=round(A[i]*0.133); {преобразование мм.рт.ст. в кПа}

write (A[i],' '); {вывод результата}

end;

End.

Результат работы программы может выглядеть так:

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

5752 6128 5639 6015 5865 6053

давление в килопаскалях:

765 815 750 800 780 805


Упражнение 2

Составьте программу, которая осуществляет ввод в массив с клавиатуры размеров 5 файлов в байтах (от100 до 9000 байт) и преобразует значения, превышающие 1024 байт, в килобайты. Результат выводится в строку.

Ответ:

Var A: array[1..5] of integer;

i: integer;

Begin

writeln ('Введите размеры файлов через пробел, размер каждого от 100 до 9000 байт');

for i:=1 to 5 do

begin

read ( A[i]);

if A[i]=1024 then A[i]:=round(A[i]/1024);

{преобразование элементов массива}

end;

for i:=1 to 5 do

if A[i]=100 then write (A[i],'байт ')

else write (A[i],'Кбайт ');{вывод результата}

End.

Результат работы программы может выглядеть так:

Введите размеры файлов через пробел, размер каждого от 100 до 9000 байт

100 2500 730 8500 3600

100байт 2Кбайт 730байт 8Кбайт 4Кбайт

Упражнение 3

Составьте программу, которая формирует массив из пятнадцати случайных чисел от -20 до 20 и:

А) чётные числа делит на два, а нечётные – умножает на три;

На экран выводятся исходные и преобразованные значения.

А) Ответ:

Var A: array[1..15] of integer;

i: integer;

Begin

writeln ('исходные значения:');

for i:=1 to 15 do

begin

A[i]:=random(41)-20;

{формирование массива случайных чисел, принадлежащих промежутку [-20;20)}

write (A[i], ' '); {вывод элементов массива на экран}

end;

writeln ; {перевод курсора на новую строку}

writeln('преобразованный массив: ');

for i:=1 to 15 do

begin

if A[i] mod 2 = 0

then A[i]:=round(A[i]/2) {преобразование массива по условию}

else A[i]:=A[i]*3;

write (A[i], ' '); {вывод элементов массива в строку}

end;

End.

Результат работы программы может выглядеть так:

исходные значения:

-2 1 -17 3 11 0 1 10 3 14 17 12 17 19 -1

преобразованный массив:

-1 3 -51 9 33 0 3 5 9 7 51 6 51 57 -3

Б) отрицательные числа возводит в квадрат, а из неотрицательных извлекает квадратный корень;

Ответ:

Var A: array[1..15] of integer;

i: integer;

Begin

writeln ('исходные значения:');

for i:=1 to 15 do

begin

A[i]:=random(41)-20;

{формирование массива случайных чисел, принадлежащих промежутку [-20;20)}

write (A[i], ' '); {вывод элементов массива на экран}

end;

writeln ; {перевод курсора на новую строку}

writeln('преобразованный массив: ');

for i:=1 to 15 do

begin

if A[i]

then A[i]:=sqr(A[i]) {преобразование массива по условию}

else A[i]:=round(sqrt(A[i]));

write (A[i], ' '); {вывод элементов массива в строку}

end;

End.

Результат работы программы может выглядеть так:

исходные значения:

-19 2 0 6 -18 19 -14 16 7 20 3 -5 -2 -11 10

преобразованный массив:

361 1 0 2 324 4 196 4 3 4 2 25 4 121 3

В) увеличивает в два раза числа, кратные пяти, а остальные уменьшает в два раза;

Ответ:

Var A: array[1..15] of integer;

i: integer;

Begin

writeln ('исходные значения:');

for i:=1 to 15 do

begin

A[i]:=random(41)-20;

{формирование массива случайных чисел, принадлежащих промежутку [-20;20)}

write (A[i], ' '); {вывод элементов массива на экран}

end;

writeln ; {перевод курсора на новую строку}

writeln('преобразованный массив: ');

for i:=1 to 15 do

begin

if A[i] mod 5 = 0

then A[i]:=A[i]*2 { преобразование массива по условию}

else A[i]:=round(A[i]/2);

write (A[i], ' '); {вывод элементов массива в строку}

end;

End.

Результат работы программы может выглядеть так:

исходные значения:

10 13 19 -18 -15 8 9 7 -6 12 -14 -18 -4 -12 -2

преобразованный массив:

20 6 10 -9 -30 4 4 4 -3 6 -7 -9 -2 -6 -1

Г) меняет местами значения первого и последнего элементов массива.

Ответ:

Var A: array[1..15] of integer;

k,i: integer;

Begin

writeln ('исходные значения:');

for i:=1 to 15 do

begin

A[i]:=random(41)-20;

{формирование массива случайных чисел, принадлежащих промежутку [-20;20)}

write (A[i], ' '); {вывод элементов массива на экран}

end;

writeln ; {перевод курсора на новую строку}

writeln('преобразованный массив: ');

k:=A[1];

A[1]:=A[15];

A[15]:=k; {преобразование массива по условию}

for i:=1 to 15 do

write (A[i], ' '); {вывод элементов массива в строку}

End.

Результат работы программы может выглядеть так:

исходные значения:

0 5 -8 20 -19 12 8 18 4 20 12 -11 -11 6 -19

преобразованный массив:

-19 5 -8 20 -19 12 8 18 4 20 12 -11 -11 6 0

Поиск элементов с заданными свойствами

Коротко о главном:

  • Алгоритм, в котором последовательно просматриваются все элементы и проверяется выполнение условий поиска, называют последовательным (линейным).

  • На ёлочном базаре случайным образом берут несколько ёлок. Их высота в метрах заносится в массив вещественных чисел. Для этих данных могут быть сформулированы следующие задачи поиска:

А) определить, есть ли хотя бы одна ёлка, высота которой равна 150 см (или больше 170 см, или меньше 100 см);

Б) найти номер (индекс) по списку ёлки, высота которой 150 см;

В) найти номера (индексы) ёлок, имеющих высоту 160 см (или меньше (больше) высоты первой (последней) по списку ёлки);

Г) найти номера (индексы) ёлок, высота которых 160 см (или больше (меньше) 165 см);

Д) найти номер (индекс) ёлки, высота которой максимальная (минимальная).



Упражнение 1

Составьте программу, которая формирует массив из шестнадцати случайных чисел от -20 до 20 и:

А) находит элементы с нулевыми значениями;

Б) находит индексы чётных элементов;

В) подсчитывает количество отрицательных элементов;

Г) Определяет, есть ли в этом массиве хотя бы одно число, кратное трём;

Д) находит в этом массиве индексы элементов, значения которых кратны трём.

На экран выводятся исходный массив и найденные элементы.

Ответ:

Var A: array[1..16] of integer;

k,i: integer;

Begin

writeln ('исходные значения:');

for i:=1 to 16 do

begin

A[i]:=random(41)-20;

{формирование массива случайных чисел, принадлежащих промежутку [-20;20)}

write (A[i], ' '); {вывод элементов массива на экран}

end;

writeln ; {перевод курсора на новую строку}

write('нулевые значения имеют элементы с индексами: ');

for i:=1 to 16 do

if A[i] = 0 then write (i, ' ');

{'нахождение и вывод элементов с нулевыми значениями'}

writeln ; {перевод курсора на новую строку}

write ('чётными являются элементы с индексами: ');

for i:=1 to 16 do

if A[i] mod 2 = 0 then write (i, ' ');

{'нахождение и вывод индексов чётных элементов'}

writeln ; {перевод курсора на новую строку}

k:=0;

for i:=1 to 16 do

if A[i]

writeln ('количество отрицательных элементов равно ', k);

{'вывод количества отрицательных элементов'}

g:=0;

for i:=1 to 16 do

if A[i] mod 3 = 0 then g:=1; {'нахождение элемента, кратного трём'}

if g=1 then writeln ('массив содержит элемент кратный трём')

else writeln ('массив не содержит элемент кратный трём');

write ('индексы элементов, кратных трём: ');

for i:=1 to 16 do

if A[i] mod 3 = 0 then write (i, ' ')

End.

Результат работы программы может выглядеть так:

исходные значения:

17 19 18 -5 9 -19 5 -8 10 -8 -11 -14 -5 2 -11 15

нулевые значения имеют элементы с индексами:

чётными являются элементы с индексами: 3 8 9 10 12 14

количество отрицательных элементов равно 8

массив содержит элемент кратный трём

индексы элементов, кратных трём: 3 5 16

Упражнение 2

В массиве хранятся сведения о количестве осадков (в мм), выпадавших ежедневно в сентябре. Составьте программу, которая подсчитывает количество дождливых дней (h[i]0).

Ответ:

Var A: array[1..30] of integer;

k, i: integer;

Begin

writeln('Количество осадков, выпавших в сентябре');

for i:=1 to 30 do

begin

A[i]:=random(11);

{формирование массива случайных чисел, принадлежащих промежутку [0;10]}

Write (A[i],' ');

end;

writeln; {перевод курсора на следующую строку}

for i:=1 to 30 do

If A[i]0 then k:=k+1; {поиск в массиве по условию}

Writeln ('Количество дождливых дней в сентябре: ',k);

End.

Результат работы программы может выглядеть так:

Количество осадков, выпавших в сентябре

1 3 5 3 10 6 10 0 5 8 8 4 3 0 0 3 2 0 3 10 8 2 5 7 5 0 2 0 8 7

Количество дождливых дней в сентябре: 24

Упражнение 3

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

Ответ:

Var A: array[1..31] of integer;

k,b,c,i: integer;

Begin

writeln('Среднедневная температура декабря:');

for i:=1 to 31 do

begin

A[i]:=random(41)-30;

{формирование массива случайных чисел, принадлежащих промежутку [-30;10)}

Write (A[i],' ');

end;

writeln;

for i:=1 to 31 do

begin

if A[i]0 then k:=k+1; {поиск в массиве по условию}

if A[i]=0 then b:=b+1; {поиск в массиве по условию}

if A[i]

end;

Writeln ('В декабре было дней с положительной температурой: ',k);

Writeln ('В декабре было дней с нулевой температурой: ',b);

Writeln ('В декабре было дней с отрицательной температурой: ',c);

End.

Результат работы программы может выглядеть так:

Среднедневная температура декабря:

0 5 6 -13 -7 -25 -6 1 1 -7 10 -20 10 -4 1 -4 -22 -25 -23 -27 -30 0 -17 -19 -10 -13 -9 -15 1 -28 -9

В декабре было дней с положительной температурой: 8

В декабре было дней с нулевой температурой: 2

В декабре было дней с отрицательной температурой: 21

Упражнение 4

В массиве хранится информация о стоимости товаров. Составьте программу, которая определяет стоимость самого дешевого (дорогого) товара и его индекс.

Ответ:

Var A: array[1..10] of integer;

k,m,maks,min,i: integer;

Begin

writeln('Стоимость товаров:');

for i:=1 to 10 do

begin

A[i]:=random(91)+10;

{формирование массива случайных чисел принадлежащих промежутку [10;100)}

Write (A[i],' ');

end;

writeln; {перевод курсора на следующую строку}

k:=1; {начальное значение номера самого дорогого товара}

maks:=A[1]; {начальное значение самого дорогого товара}

m:=1; {начальное значение номера самого дешёвого товара}

min:=A[1]; {начальное значение самого дешёвого товара}

for i:=2 to 10 do

begin

If A[i]A[k] then

begin

maks:=A[i];k:=i;

end; {поиск максимального элемента массива и его номера}

If A[i]

Begin

min:=A[i];m:=i;

end; {поиск минимального элемента массива и его номера}

end;

Writeln ('Самый дорогой товар с номером ',k,' его стоимость ',maks);

Writeln ('Самый дешёвый товар с номером ',m,' его стоимость ',min);

End.

Результат работы программы может выглядеть так:

Стоимость товаров:

85 67 33 99 92 17 88 29 87 85

Самый дорогой товар с номером 4 его стоимость 99

Самый дешёвый товар с номером 6 его стоимость 17




Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!