Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Топ:
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Дисциплины:
2020-12-06 | 130 |
5.00
из
|
Заказать работу |
|
|
Например, ему хотелось бы знать:
а) среднюю температуру в июне;
б) число дней, в которых температура была выше 23 градусов.
Решение
Способ
Program Temperature;
uses WinCrt;
var
t: array [1..30] of integer;
i, k: integer;
s: real;
begin
for i:= 1 to 30 do
begin
write('Введите температуру в ',i,' - день '); readln(t[i])
end;
s:= 0; k:= 0;
for i:= 1 to 30 do
begin
s:= s + t[i];
if t[i] > 23 then k:= k + 1
end;
writeln('Средняя температура в июне ', s/30:4:2);
writeln('Число дней с температурой больше 23 град. ', k)
end.
Способ
Program Temperature;
uses WinCrt;
type
a = array [1..30] of integer;
var
t: a; i, k: integer; s: real;
begin
for i:= 1 to 30 do
begin
write('Введите температуру в ', i, ' - день '); readln(t[i])
end;
s:= 0; k:= 0;
for i:= 1 to 30 do
begin
s:= s + t[i];
if t[i] > 23 then k:= k + 1
end;
writeln('Средняя температура в июне ', s/30:4:2);
writeln('Число дней с температурой больше 23 град. ', k)
end.
Задача 2. Составить программу подсчета суммы элементов массива из 20 чисел, имеющих четные порядковые номера.
Решение
Способ
Program Problem2;
uses WinCrt;
const
n = 20;
type
t = array [1..n] of integer;
var
a: t;
s, i: integer;
{----------------------------------------------------------------------------------------}
Procedure create(n: integer; var a: t);
var
i: integer;
begin
randomize;
writeln('Заданный массив целых чисел');
for i:= 1 to n do
begin
a[i]:= random(201)-100; write(a[i], ' ')
end;
writeln
end;
{----------------------------------------------------------------------------------------}
begin
create(n, a);
s:= 0;
for i:= 1 to n do
if i mod 2 = 0 then s:= s + a[i];
writeln('Сумма элементов с четными номерами равна ', s)
end.
Способ
Program Problem2;
uses WinCrt;
const
n = 20;
type
t = array [1..n] of integer;
|
var
a: t;
s, i: integer;
begin
randomize;
writeln('Заданный массив целых чисел');
s:= 0;
for i:= 1 to n do
begin
a[i]:= random(201)-100;
write(a[i], ' ');
if i mod 2 = 0 t hen s:= s + a[i]
end;
writeln;
writeln('Сумма элементов с четными номерами равна ', s)
end.
Задача 3. В одномерном массиве необходимо найти номер заданного пользователем числа и переставить его на первое место в массиве, последовательно переставляя с соседними элементами.
Решение
Program Problem 3;
uses WinCrt;
const
n = 20;
type
t = array [1..n] of integer;
var
a : t;
i, k, d: integer;
{----------------------------------------------------------------------------------------}
Procedure create(n: integer; var a: t);
var
i: integer;
begin
randomize;
writeln('Заданный массив целых чисел');
for i:= 1 to n do
begin
a[i]:= random(201) - 100; write(a[i], ' ')
end;
writeln
end;
{----------------------------------------------------------------------------------------}
Procedure search_number(d: integer; a: t; var k: integer);
var
i: integer;
begin
i:= 0;
repeat
i:= i + 1
until a[i] = d;
k:= i
end;
{----------------------------------------------------------------------------------------}
Procedure transp_begin(n, k: integer; var a: t);
var
i, p: integer;
begin
for i:= k downto 2 do
begin
p:= a[i-1];
a[i-1]:= a[i];
a[i]:= p
end
end;
{----------------------------------------------------------------------------------------}
begin
create(n, a);
write('Введите переставляемый элемент '); readln(d);
search_number(d, a, k);
transp_begin(n, k, a);
writeln('Массив после перестановки элемента в начало');
for i:= 1 to n do write(a[i], ' ');
writeln
end.
Задача 4. Сортировка методом пузырька
Решение
Program Problem 4; {Пузырьковая сортировка}
uses WinCrt;
const
n = 100;
type
t = array [1..n] of integer;
var
a: t;
{----------------------------------------------------------------------------------------}
Procedure create(n: integer; var a: t);
var
i: integer;
begin
randomize;
writeln('Заданный массив целых чисел');
for i:= 1 to n do
begin
a[i]:= random(201) - 100;
write(a[i], ' ')
end;
writeln
end;
{----------------------------------------------------------------------------------------}
|
Procedure bubble(n: integer; var a: t);
var
i, j, p: integer; {Сортировка элементов массива}
begin
for i:= 2 to n do
for j:= n downto i do
if a[j] < a[j-1] then
begin
p:= a[j];
a[j]:= a[j-1];
a[j-1]:= p
end;
writeln('Упорядоченный по не убыванию массив');
for i:= 1 to n do write(a[i], ' ');
writeln
end;
{----------------------------------------------------------------------------------------}
begin
create(n, a);
bubble (n, a)
end.
Задача 5. Задача поиска элемента в упорядоченном массиве. Пусть задан целочисленный массив и задано целое число b. Выяснить входит ли число b в заданный массив и если входит, то каково значение номера элемента равного данному числу, т. е. найти такое p, для которого
Решение
Program Problem 5;
uses WinCrt;
const
n = 20;
type
t = array [1..n] of integer;
var
a: t;
p, q, s, b, i: integer;
begin
writeln('Вводите элементы упорядоченного по неубыванию массива');
for i:= 1 to n do
begin
write(' Введите ', i, '- й элемент '); readln(a[i])
end;
writeln;
write(' Введите число b '); readln(b);
p:= 1; q:= n;
while p < q do
begin
s:= (p + q) div 2;
if a[s] < b then p:= s + 1
else q:= s
end;
if a[p ]= b
then writeln(' Число ', b, ' равно ', p, '- му элементу ')
else writeln('Такого элемента в массиве нет')
end.
Задача 6. Сравнить два массива.
Решение
Program Problem 6;
uses WinCrt;
const
n1 = 100;
type
t = array [1..n1] of integer;
var
a, b : t;
i, k, p, n, m: integer;
{----------------------------------------------------------------------------------------}
Procedure quick_search(a: t; n, b: integer; var p: integer);
var
q, s: integer;
begin
p:= 1; q:= n;
while p < q do
begin
s:= (p + q) div 2;
if a[s] > b then p:= s + 1
else q:= s
end
end;
{---------------------------------------------------------------------------------------}
begin
write('Введите число элементов массива a, n= ');
readln(n);
write('Введите число элементов массива b, m= ');
readln(m);
writeln('Введите упорядоченный по убыванию элементы массива a');
for i:= 1 to n do
begin
write(' Введите ', i, '- й элемент '); readln(a[i])
end;
writeln('Введите элементы массива b ');
for i:= 1 to m do
begin
write(' Введите ', i, '- й элемент '); readln(b[i])
end;
|
writeln('Заданные массивы чисел');
for i:= 1 to n do write(a[i]:4); writeln;
for i:= 1 to m do write(b[i]:4); writeln;
k:= 0;
for i:= 1 to m do
begin
quick_search(a, n, b[i], p);
if a[p] <> b[i] then k:= k + 1
end;
write('Число элементов массива b, не равных ');
writeln('элементам массива a равно ', k)
end.
Задача 7. Для упорядочивания массива чисел a1, a2,..., an может быть использован алгоритм сортировки простыми вставками. Опишем этот алгоритм применительно к упорядочиванию по возрастанию. Просматривать последовательно a2,..., an и каждый новый элемент ai вставлять на подходящее место в уже упорядоченную совокупность a1,..., ai-1. Написать программу, реализующую этот алгоритм.
Решение
Пусть задан массив чисел (снова, для простоты рассуждений, возьмем массив целых чисел):
12 -3 25 -10 6 8 34 -65 44 17
Этот, заданный массив обозначим именем a. В нашем примере он имеет 10 элементов.
Заведем еще один массив, также из 10 тех же элементов, но уже упорядоченных по возрастанию.
Наша задача будет состоять в построении этого массива. В качестве первого элемента упорядоченного массива b возьмем первый элемент массива a:
Итак, массив b:
12
Теперь берем второй элемент массива a - это -3 и с помощью процедуры быстрого поиска вставляем его в упорядоченный массив b. Поскольку -3 меньше 12, то он вставится перед 12 и упорядоченный массив b уже будет состоять из 2-х элементов:
-3 12
Берется третий элемент массива a - 25 и вставляется в массив b, получаем:
-3 12 25
И такой процесс будем продолжать до тех пор, пока все n элементов массив a не будут просмотрены. В результате образуется новый упорядоченный массив b.
Способ
Program Problem7; {Сортировка простыми вставками}
uses WinCrt;
const
n = 20;
type
t = array [1..n] of integer;
var
a, b: t;
i, p: integer;
{----------------------------------------------------------------------------------------}
Procedure create(n: integer; var a: t);
var
i: integer;
begin
randomize;
writeln('Заданный массив целых чисел');
for i:= 1 to n do
begin
a[i]:= random(201) - 100;
write(a[i], ' ')
end;
writeln
end;
{----------------------------------------------------------------------------------------}
Procedure quick_search(m, c: integer; b: t; var p: integer);
var
q, s: integer;
begin
|
p:= 1; q:= m;
while p < q do
begin
s:= (p + q) div 2;
if c > b[s] then p:= s + 1 else q:= s
end
end;
{---------------------------------------------------------------------------------------}
Procedure movement_end(i, k: integer; var b: t);
var
j: integer;
begin
for j:= i downto k + 1 do b[j]:= b[j - 1]
end;
{---------------------------------------------------------------------------------------}
begin
create(n, a);
b[1]:= a[1];
for i:= 2 to n do
begin
quick_search(i, a[i], b, p);
movement_end(i, p, b);
b[p]:= a[i]
end;
writeln;
writeln('Массив упорядоченный по возрастанию.');
for i:= 1 to n do write(b[i], ' ');
writeln
end.
Способ
Program Problem7a; {Сортировка простыми вставками}
uses WinCrt;
const
n = 20;
type
t = array [1..n] of integer;
var
a: t;
i: integer;
{----------------------------------------------------------------------------------------}
Procedure create(n: integer; var a: t);
var
i: integer;
begin
writeln(' Заданный массив чисел ');
randomize;
for i:= 1 to n do
begin
a[i]:= random(201) - 100;
write(a[i], ' ')
end;
writeln;
end;
{---------------------------------------------------------------------------------------}
Procedure insert(var a: t; n: integer);
var
p, q, s, k, c: integer;
begin
for i:= 2 to n do
begin
p:=1;
q:= i;
c:= a[i];
while p < q do
begin
s:= (p + q) div 2;
if c > a[s] then p:= s + 1
else q:= s
end;
for k:= i downto p + 1 do a[k]:= a[k - 1];
a[p]:= c
end
end;
{----------------------------------------------------------------------------------------}
begin
create(n, a);
insert(a, n);
writeln;
writeln('Массив упорядоченный по возрастанию.');
for i:= 1 to n do write(a[i], ' '); writeln
end.
|
|
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!