Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_ОАиП.doc
Скачиваний:
47
Добавлен:
01.04.2025
Размер:
5 Мб
Скачать
☆

Лабораторная работа №16.

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

Цель: Приобретение основных навыков при решение задач на массивы.

Задача 1. Создать массив случайных чисел из 30 элементов. Произвести сортировку по невозрастанию и неубыванию. Найти минимальный и максимальный элементы, определить номера этих элементов. Если этих элементов несколько, то создать массив минимальных и максимальных чисел. Подсчитать сумму всех элементов массива и найти среднее арифметическое.

Задание: Уметь объяснить работу программы.

uses crt;

const n=30;

var a,mn,mx: array[1..n] of integer;

min,max,imin,imax,i,j,sum,t:integer;

sred:double;

begin

clrscr;

randomize;

writeln;writeln;

writeln('Исходный массив');writeln;

sum:=0;

for i:=1 to n do begin

a[i]:=random(101);

write(a[i],' ');

sum:=sum+a[i];

end;

sred:=sum/n;

writeln;

writeln;

writeln('Сумма элементов массива=',sum,' ','Среднее ариф-ое=',sred);

min:=a[1];max:=a[1];

for i:=2 to n do begin

if a[i]<min then min:=a[i];

if a[i]>max then max:=a[i];

end;

imin:=0; imax:=0;

for i:=1 to n do begin

if a[i]=min then inc(imin);

if a[i]=max then inc(imax);

end;

if imin>1 then begin writeln;writeln('Массив мин-ых эл-ов');

for i:=1 to imin do begin

mn[i]:=min;

write(mn[i],' ');

end;end

else begin for i:=1 to n do if a[i]=min then begin imin:=i; break;end;

writeln;

writeln('Мин-ый=',min,' номер мин-го=',imin);end;

if imax>1 then begin writeln;writeln('Массив максим-ых эл-ов');

for i:=1 to imax do begin

mx[i]:=max;

write(mx[i],' ');

end;end

else begin for i:=1 to n do if a[i]=max then begin imax:=i; break; end;

writeln;

writeln('Макс-ый=',max,' номер макс-го=',imax);end;

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]<a[j] then begin t:=a[i];

a[i]:=a[j];

a[j]:=t;

end;

writeln;

writeln('Сорт-ка1');

for i:=1 to n do write(a[i],' ');

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]>a[j] then begin t:=a[i];

a[i]:=a[j];

a[j]:=t;

end;

writeln;

writeln;

writeln('Сортировка2');

for i:=1 to n do write(a[i],' ');

readln;

end.

Задача 2. Написать программу, которая «сжимает» целочисленный массив из 10 элементов, удаляя из него элементы, меньшие заданной величины. Освободившиеся в конце массива элементы заполнить нулями.

…………………………………………………………………………………………………

Исходный массив:

6

-8

15

9

-1

3

5

-10

12

2

Допустим, требуется удалить из него все элементы, значение которых меньше 5. Результат должен иметь вид

6

15

9

5

12

0

0

0

0

0

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

  1. Просматривая массив, определить номер самого первого из удаляемых элементов.

  2. Если таковой есть, сдвигать каждый последующий элемент массива на первое «свободное» место, обнуляя оставшуюся часть массива.

Индивидуальное задание.

1. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

  1. сумму отрицательных элементов массива;

  2. произведение элементов массива, расположенных между максимальным и минимальным элементами.

Упорядочить элементы массива по возрастанию.

2. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

  1. сумму положительных элементов массива;

  2. произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами.

Упорядочить элементы массива по убыванию.

3. В одномерном массиве, состоящем из n целочисленных элементов, вычислить:

  1. произведение элементов массива с четными номерами;

  2. сумму элементов массива, расположенных между первым и последним нулевыми элементами.

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом – все отрицательные (элементы, равные нулю, считать положительными).

4. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

  1. сумму элементов массива с нечетными номерами;

  2. сумму элементов массива, расположенных между первым и последним отрицательными элементами.

Сжать массив, удалив из все элементы, модуль которых не превышает единицу. Освободившиеся в конце массива элементы заполнить нулями.

5. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

  1. максимальный элемент массива;

  2. сумму элементов массива, расположенных до последнего положительного элемента.

Сжать массив, удалив из все элементы, модуль которых находится в интервале [a,b]. Освободившиеся в конце массива элементы заполнить нулями.

6. В одномерном массиве, состоящем из n вещественных элементов, вычислить:

  1. минимальный элемент массива;

сумму элементов массива, расположенных между первым и последним положительными элементами]. Освободившиеся в конце массива элементы заполнить нулями.