Практическая часть Задание 1 Задача 1
В массиве хранятся данные об атмосферном давлении зп месяц. Найти:
1)найти среднее значение давления за время наблюдения
2)максимальное и минимальное значение давления
3)колличесво дней, в которые давление превышало заданную велечину Q
4)Колличество дней, в которые давление имело одинаковое значение
Блок схема
Листинг программы
program davlinie;
uses crt;
var a,b,d,e,i,max,min,j,k:integer;
c:real;
x:array[1..700]of integer;
begin
clrscr;
writeln('день давление');
randomize;
for i:=1 to 30 do begin
x[i]:=random(600)+100;
writeln(i,'-значение давления:=',x[i]);
end;
c:=0;
min:=x[1];e:=0;
max:=x[1];j:=0;
writeln('введите значение давление для определения колличества');
read(d);
for i:=1 to 30 do begin
if x[i]>d then e:=e+1;
for j:=1 to n do if x[i]=x[j+1] then k:=k+1;
if x[i]>max then max:=x[i] else if x[i]<min then min:=x[i];
c:=x[i]+c;
end;
c:=c/30;
writeln('среднее значение=',c);
writeln('макс:=',max,'мин:=',min);
writeln('колличество ',e);
writeln('колличество колллич. одинаковых дней ',j);
readkey;
end.
Результат программы
Задача 2
Сдвинуть все отрицательные элементы в конец массива, сохраняя порядок их следовани в исходный массив сформировать с помощью генератора случайных чисел
Блок схема
Листинг программы
program mas;
uses crt;
var
e,max,i,j:integer;
a,b:array[1..100] of integer;
begin
clrscr;
randomize;
writeln('исходный массив');
for i:=1 to 10 do
begin a[i]:=random(20)-10; write(a[i],' '); end;
writeln;writeln('массив после обработки');
for j:=1 to 10 do
for i:=1 to 9 do begin
if a[i]<0 then
while a[i+1]>0 do
begin
e:=a[i];
a[i]:=a[i+1];
a[i+1]:=e; end;
end;
for i:=1 to 10 do write(a[i],' ');
readkey;
end.
Результат программы
Задача 3
Задан массив размера N. Найти наибольшее колличество идущих элементов массива , значение которых равно 0. Для отладки использовать генератор случайных чисел.
Блок схема
Листинг програимы
PROGRAM V12;
USES CRT;
VAR
A:ARRAY [1..100] OF INTEGER;
i,ChE,MaxChE:INTEGER;
BEGIN CLRSCR;
RANDOMIZE;
ChE:=0;
MaxChE:=0;
WRITELN('PROIZVOLNAY POSLEDOVATELNOST IZ 100 NATURALNIH CHISEL: ');
FOR i:=1 TO 20 DO
BEGIN
A[i]:=random(2)-1;
WRITE(A[i],' ');
END;
FOR i:=1 TO 20 DO BEGIN IF A[i]=0 THEN ChE:=ChE+1 ELSE
BEGIN
IF ChE>MaxChE THEN MaxChE:=ChE;
ChE:=0;
END;
END;
WRITELN;
WRITELN('число повторяющихся элементов равная 0 равна ',MaxChE);END.
Результат программы
Теоретическая часть
Сортировка одномерного массива
Cамым простым методом сортировки является метод "пузырька". Чтобы понять, как он работает, представим, что массив (таблица) расположен вертикально.
Элементы с большим значением всплывают вверх наподобие больших пузырьков.
При первом проходе вдоль массива, начиная проход "снизу", берется первый элемент и поочередно сравнивается с последующими. При этом: * если встречается элемент с меньшим значением, то они меняются местами; * при встрече с более "тяжелым" элементом, последний становится "эталоном" для сравнения, и все следующие сравниваются с ним . В результате наибольший элемент оказывается в самом верху массива. Во время второго прохода вдоль массива находится второй по величине элемент, который помещается под элементом, найденным при первом проходе, т.е на вторую сверху позицию, и т.д. При втором и последующих проходах, нет необходимости рассматривать ранее "всплывшие" элементы, т.к. они уже больше оставшихся. Другими словами, во время j-го прохода не проверяются элементы, стоящие на позициях выше j.
Программа:
begin
for j:=1 to N-1 do
for i:=1 to N-j do
if M[i] > M[i+1] then
begin t:=M[i]; M[i]:=M[i+1]; M[i+1]:=t; end;
end;
Задание 2
Упорядочить одномерный массив так, что бы в начале распологались четные элементы в порядке возростания их значений, а за тем нечетные элементы в порядке убывания их значений. Для отладки использовать генератор случайных чисел.