Задачи для изучающих программирование самостоятельно 30 Задания на лабораторную работу по теме "Обработка одномерных массивов" 39
Вид материала | Документы |
СодержаниеВвод/вывод массива Вычисление суммы и среднего арифметического элементов массива Program SumExample Begin { ввод массива с клавиатуры } |
- Обработка одномерных массивов, 21kb.
- Поэтому при написании программы будьте особенно внимательны, не путайте индексы элементов, 363.59kb.
- Лекция № Распределение памяти. Динамические переменные, 73.48kb.
- Алгоритмы сортировки одномерных массивов, 53.15kb.
- Урок 6 (1 час) Тема урока, 169.57kb.
- Поняття масиву. Одновимірний масив, 62.45kb.
- План урока Выступление со словами: Нередко… Показ презентации, 73.14kb.
- Курс является базовым как для изучения других математических дисциплин, так и для более, 36.89kb.
- В. А. Давыденко программирование и основы алгоритмизации лабораторный практикум, 1951.1kb.
- Методические указания могут быть полезны для студентов экономических специальностей,, 198.11kb.
Ввод/вывод массива
Задача 1: Ввод массива с клавиатуры
Алгоритм состоит из двух пунктов:
1 . Ввод количества элементов.
2 . Ввод элементов массива поодиночке в цикле.
Фрагмент программы:
…
{1 - ввод количества элементов}
repeat
write('Введите n:');
readln(n);
until (n>=1) and (n<=maxN);
{2 - ввод элементов массива поодиночке}
for i:=1 to n do
begin
write('a[',i,']');
readln(a[i]);
end;
…
Задача 2: Заполнение массива случайными числами.
Алгоритм состоит из трех пунктов:
1 . Перезапустить генератор случайных чисел.
2 . Ввести количество элементов n (или сгенерировать
случайное значение n).
3 . Сгенерировать значения для всех элементов.
Фрагмент программы:
…
{1 - перезапускаем генератор случайных чисел}
randomize;
{2 - генерируем случайное значение n}
n:=random(maxN);
{3 - генерируем n элементов массива}
for i:=1 to n do
a[i]:=random(100); {каждый элемент примет значение
из интервала 0..99}
…
Краткая информация об используемых стандартных процедурах и функциях:
Randomize - инициализирует генератор случайных чисел случайным значением (случайное значение зависит от момента перезапуска, т.е. зависит от времени).
Random(Num) - возвращает случайное целое число, находящееся в интервале 0 .. (Num-1) (Например, если Num=100 (как в нашем примере), то Random возвращает числа в интервале от 0 до 99).
Если Num<=0, то Random всегда будет возвращать 0.
Чтобы получить значения в интервале, отличном от [0..Num-1], необходимо к значению, возвращаемому Random, прибавить смещение начала интервала.
Пример 1: необходим интервал [-50 .. 50].
Длина интервала 101, смещение начала интервала –50.
random(101)-50
Пример 2: необходим интервал [20 .. 30].
Длина интервала - 11, смещение начала интервала 20.
random(11)+20
Пример 3: необходим интервал [-1000 .. -500]
Длина интервала 501, смещение начала интервала -1000
random(501)-1000
Задача 3: Вывод массива.
Алгоритм состоит из двух пунктов:
1. Вывод имени массива.
2. Вывод массива по элементам.
Фрагмент программы:
…
{1 - вывод имени массива}
writeln ('Массив А[',n,']');
{2 - вывод элементов массива}
for i:=1 to n do
writeln('A[',i,']=',a[i]);
…
Вычисление суммы и среднего арифметического элементов массива
Задача 4: Подсчитать сумму элементов массива.
Алгоритм содержит два пункта:
1. Сумма S=0.
2. Проход по всем элементам массива и прибавление их значений к сумме S.
Приведем полный текст программы – решение этой задачи:
{Пример обработки одномерного массива}
{ Задание: Ввести массив. Подсчитать сумму элементов массива.}
Program SumExample;
Const {определение констант}
maxN = 20; {максимально возможное количество элементов
в массиве}
Type {определение типов}
IndexEl = 1 .. maxN; {индексы массива лежат в интервале
от 1 до maxN}
arrInt = array[interval] of integer; {массив целых чисел
содержащий до maxN элементов}
Var
a:arrInt; {массив}
n:interval; {размерность массива}
i:IndexEl; {переменная для сканирования массива}
S:integer; {сумма элементов массива}
Begin
{ ввод массива с клавиатуры }
write(‘Введите n=’);
read(n); {ввод количества элементов}
for i:=1 to n do
read(A[i]); {ввод самих элементов}
{Подсчет суммы элементов массива}
{1} s:=0;
{2} for i:=1 to n do
s:=s+A[i];
{Вывод полученного значения суммы}
writeln(‘сумма элементов массива S=’, S);
end. {конец программы}
Задача 5: Вычислить среднее арифметическое элементов массива.
Алгоритм содержит три пункта. Первые два совпадают с предыдущей задачей:
1. Сумма s=0.
2. Проход по всем элементам массива и прибавление их значений к сумме s.
3. Сумму делим на количество элементов массива sa=s/n .
Фрагмент программы:
Var {дополнительные переменные}
s: integer; {сумма элементов массива}
sa:real; {среднее арифметическое элементов массива}
…
Begin
...
{1} s:=0;
{2} for i:=1 to n do
s:=s+A[i];
{3} s:=s/n;
…