Читайте также: |
|
2.1 Составить программу вычисления значения полинома n -ой степени:
y = a0 xn + a1 xn-1 + … + an-1 x + an .
Для вычисления полинома удобно использовать формулу Горнера (гнездовую процедуру)
y = (…((a0 x + a1) x + a2 ) x + … + an-1) x + an .
Если выражение, стоящее внутри скобок, обозначить yi, то значение выражения в следующих скобках можно вычислить, используя рекуррентную формулу
yi+1 = yi x + an-1.
Значение полинома y получается после повторения этого процесса в цикле n раз. Начальное значение yi целесообразно взять равным a0, а цикл начинать с i = 1. Все коэффициенты полинома и свободный член, как правило, сводятся в массив, состоящий из элементов n + 1 (n — порядок полинома).
program GORNER (Input, output);
{ вычисление значения полинома по схеме Горнера }
Var
I, N: Integer; { параметр цикла и степень полинома }
X, Y: Real; { аргумент и значение полинома }
А: Array [0..100] of Real; {массив коэффициентов полинома}
Begin
{ Ввод исходных данных }
Writeln (’Введите порядок полинома N < 100’);
Readln (N);
Writeln (’Введите аргумент’);
Readin (X);
Writeln (’Введите коэффициенты полинома, ’);
Writeln (’начиная с коэффициента при старшей степени’);
for i:= 0 to N do
Read (A[i]);
Y:= A[0];
for i:= 1 to N do
Y:= Y*X + A[i]; { вывод результата }
Writeln ('Значение полинома =', Y:10:2)
End.
2.2 Заданы два вектора X = { xi } и Y = { yi }, i = 1 ¸ n. Написать программу формирования третьего вектора Z = { zi }, каждый элемент которого
zi = max (xi, yi).
2.3 Задана последовательность величин x1, x2,..., xn. Написать программу вычисления суммы элементов из указанной последовательности, удовлетворяющих неравенству xk > р, где р заданная величина.
2.4 Написать программу вычисления скалярного произведения двух векторов
_ _ n
(a, b) = å ai bi.
i=1
2.5 Пусть дано натуральное число п и вещественные числа а1, а2,..., аn. В последовательности а1, а2,..., аn все отрицательные члены увеличить на 0,5, а все неотрицательные, меньшие среднего арифметического, заменить на 0,1.
2.6 Пусть даны натуральное число п, целые числа а1, а2,..., аn. Получить сумму положительных, число отрицательных и число нулевых членов последовательности а1, а2,..., аn..
2.7 Пусть даны целые числа а1 , а2 ,..., аn , b1 , b2 ,..., bn . Преобразовать последовательность b1, b2,..., bn по правилу, согласно которому если аi £0, то bi увеличивается в 10 раз, иначе bi, заменяется нулем (i = 1 ,..., n).
2.8 С помощью следующего фрагмента программы вычислить сумму тех элементов массива х, индексы которых совпадают со значениями элементов массива а (аi ¹ аj при i ¹ j ).
Var
x: аrrау [1..20] of real:
а: аrrау [1..15] of 1..20;
2.9 Пусть даны целые числа а1, а2,..., аn , каждое из которых отлично от нуля. Если в последовательности отрицательные и положительные члены чередуются, то ответом должна служить сама исходная последовательность. Иначе — получите все отрицательные члены последовательности, сохранив порядок их следования.
2.10 Пусть дано натуральное число п и вещественные числа а1, а2,..., аn. Найти максимальное значение в массиве A и его индекс.
program Maximum (Input, Output);
Const
MinIndex = 1; MaxIndex = 10;
Type
Index = MinIndex.. MaxIndex;
Massiv = Array [ Index ] of Real;
Var
i, K: Index;
Max: Real;
A: Massiv;
Begin
Writeln ('Введите элементы массива "A"');
for i:= MinIndex to MaxIndex do
Read (A[ i ]);
Max:= A[ MinIndex ]; K:= MinIndex;
for i:= MinIndex + 1 to MaxIndex do
if A[ i ] > Max then
Begin Max:= A[ i ]; K:= i end;
Write ('Максимумом явл-ся',K:3,' элемент массива "А"');
Writeln (', его значение =', Max:6:2)
End.
2.11 Пусть даны вещественные числа а1, а2,..., аn. Требуется умножить все элементы последовательности а1, а2,..., аn на квадрат ее наименьшего элемента, если аi ³ 0, и на квадрат ее наибольшего элемента, если аi < 0.
2.12 Пусть даны целые числа а1, а2,..., аn . Получите новую последовательность, выбросив из исходной максимальный и минимальный элементы.
2.13 Пусть дана последовательность из 100 различных целых чисел. Найдите среднее арифметическое чисел этой последовательности, расположенных между максимальным и минимальным числами (в сумму включить и оба этих числа).
2.14 Используя следующий фрагмент программы, преобразуйте массив x по указанному ниже правилу, воспользовавшись массивом y как вспомогательным:
Var
х, у: array [1..70] of real;
k: 1..69;
а) все отрицательные элементы массива x перенесите в его начало, а все остальные — в конец, сохраняя исходное взаимное расположение как среди отрицательных, так и среди остальных элементов;
б) элементы массива х циклически сдвиньте на k позиций влево.
2.15 Пусть элементы из массива х упорядочены по неубыванию, а элементы массива у — по невозрастанию. Используя следующий фрагмент программы, объедините элементы этих двух массивов в один массив z так, чтобы они оказались упорядоченными по неубыванию:
Const
k = 10:
m = 20;
n = k + m;
Var
x: array [ 1..k ] of real;
у: array [ 1..m ] of real;
z: array [ 1..n ] of real;
2.16 Пусть даны вещественные числа а1 , а2 ,..., а 2n . Получите:
а) max (а1 + а2n , а2 + а2n - 1 ,..., аn + а n +1 );
б) min (а1 а n+1 , а2 а n+2 ,... , аn а 2n ).
2.17 Пусть даны вещественные числа а1, а2,..., а 20. Преобразуйте последовательность по правилу: большее из а i и а i+10 ( i = 1,...,10) примите в качестве нового значения а i, меньшее — в качестве нового значения а i+10.
2.18 Пусть даны целые числа а1 , а2 ,..., а n. Если в данной последовательности ни одно четное число не расположено после нечетного, то получите все отрицательные члены последовательности, иначе — все положительные. Порядок следования чисел в обоих случаях замените обратным.
2.19 Пусть дан фрагмент программы:
Var
k: 0.. 9999:
d: array [ 1..4 ] of '0'.. '9';
а) запишите в массив d цифры числа k;
б) получите целое k, составленное из цифр массива d.
2.20 В массиве из 20 целых чисел найдите наибольший элемент среди отрицательных (считайте, что такой элемент один) и поменяйте его местами с первым элементом.
2.21 Пусть даны натуральные числа п, а1 , а2 ,..., а n . Определите количество членов а i последовательности а1 , а2 ,..., а n :
а) являющихся нечетными числами;
б) кратных 3 и не кратных 5;
в) являющихся квадратами четных чисел;
г) удовлетворяющих условию: а i < (а i + а i+1)/2;
2.22 Составить программу для подсчета числа компонент логического вектора В = { bi }, i = 1 ¸ n, имеющих значение false.
2.23 Составить программу формирования из вектора A = { ai }, i = 1 ¸ 3 n вектора В = { bi }, i = 1 ¸ n, очередная компонента которого равна среднему арифметическому очередной тройки компонент вектора А.
2.24 Составить программу осуществления циклического сдвига влево на k позиций элементов вектора В = { bi }, i = 1 ¸ n.
2.25 Составить программу присвоения логической переменной A значения true, если элементы вещественного вектора В = { bi }, i = 1 ¸ n образуют неубывающую последовательность (b1 ≤ b2 ≤... ≤ bn) и значение false — в противном случае.
2.26 Задан вектор A = { ai }, i = 1 ¸ n. Составить программу для формирования нового вектора A = { ai }, i = 1 ¸ n -1, получаемого из вектора А путем исключения минимального элемента (с сохранением порядка расположения оставшихся элементов).
2.27 Составить программу преобразования вектора A = { ai }, i = 1 ¸ n так, чтобы его компоненты располагались в обратном порядке, т.е. получить вектор A = { an, an-1 ,…, a1 }.
2.28 Составить программу подсчета у логического вектора В = { bi }, i = 1 ¸ n максимального количества стоящих подряд элементов с значением false.
2.29 Задан вектор В = { bi }, i = 1 ¸ n. Составить программу вычисления наибольшего и наименьшего значения модуля разности между соседними элементами.
2.30 Составить программу объединения двух упорядоченных последовательностей чисел a1 ≤ a2 ≤... ≤ an и b1 ≤ b2 ≤... ≤ bm в одну упорядоченную последовательность.
2.31 Пусть даны вещественные числа а1 , а2 ,..., аn , b1 , b2 ,..., bn . Вычислите произведение (а1 + bn) (а2 + bn -1 )...(аn + b1 ).
2.32 Используя следующий фрагмент, напишите программы для решения перечисленных ниже задач:
Const
n = 20;
Var
x: array [1..n] of integer;
y, k: integer; t: Boolean;
а) переменной t присвоить значение true, если элементы массива x упорядочены по возрастанию, иначе значение false;
б) переменной t присвоить значение true, если в массиве x нет нулевых элементов и при этом положительные элементы чередуются с отрицательными, иначе значение false;
в) переменной k присвоить либо номер первого вхождения у в массив х, либо число n+1, если у не входит в х;
г) вычислить y = x1 + x1х2 + x1х2х3 +... + x1х2...х т, где т — либо номер первого отрицательного элемента массива х, либо число n, если в массиве x нет отрицательных элементов.
2.33 Пусть дан массив из n элементов. Каждый отрицательный элемент замените полусуммой тех двух элементов, которые стоят рядом с ним справа и слева.
2.34 Пусть дана последовательность из n элементов. Уменьшите ее, удалив первый из отрицательных и минимальный из положительных (считайте, что такой элемент один) и сдвинув все остальные к началу.
2.35 Пусть дана последовательность из n элементов. Уменьшите ее, удалив все минимальные и максимальные элементы и сдвинув все остальные к началу последовательности.
2.36 Замените каждый элемент массива средним арифметическим всех предшествующих ему элементов.
2.37 Пусть даны вещественные числа а1 , а2 ,..., а n. Получите числа b1 , b2 ,..., bn, где b i — среднее арифметическое всех членов последовательности а1 , а2 ,..., а n, кроме а i (i =1,..., n).
2.38 Используя следующий фрагмент программы, упорядочьте массив x по неубыванию (то есть переставьте его элементы так, чтобы для всех i выполнялось условие хi £ хi+1) в соответствии с перечисленными ниже алгоритмами сортировки (упорядочения):
Const
n = 20;
Var
x: array [1..n] of real;
а) сортировка выбором — отыскивается максимальный элемент и переносится в конец массива; затем этот метод применяется ко всем элементам, кроме последнего (он уже находится на своем месте), и
т. д.;
б) сортировка обменом (пузырьковая сортировка) — последовательно сравниваются пары соседних элементов хi ≤ хi+1 (i = 1, 2,..., n -1), и если хi > хi+1 то они переставляются; тем самым наибольший элемент оказывается на своем месте в конце массива; затем этот метод применяется ко всем элементам, кроме последнего, и т. д.;
в) сортировка вставками — пусть первые k элементов массива уже упорядочены по неубыванию; берется ( k+ 1)-й элемент и размещается среди первых k элементов так, чтобы упорядоченными оказались уже k+ 1 первых элементов; этот метод применяется при k от 1 до п - 1.
2.39 Пусть элементы массива х упорядочены по возрастанию. С помощью представленного ниже алгоритма присвойте переменной k номер элемента массива х, равного числу y, или 0, если такого элемента нет. При этом использовать следующий метод двоичного (бинарного) поиска: сравнить y со средним элементом массива (или элементом около середины); если эти числа равны, поиск завершается, если же y меньше среднего элемента, то y надо искать в левой половине массива, а иначе — в правой. Далее к выбранной половине применяется этот же алгоритм.
2.40 Пусть даны две последовательности по n целых чисел в каждой. Найдите наименьшее среди тех чисел первой последовательности, которые не входят во вторую последовательность, считая, что хотя бы одно такое число есть.
2.41 Пусть дана последовательность из n целых чисел. Определите количество инверсий в этой последовательности (то есть таких пар элементов, в которых большее число находится слева от меньшего: х i >х j при i< j).
2.42 Пусть даны вещественные числа а1 , а2 ,..., аn . Если в результате замены отрицательных членов последовательности а1 , а2 ,..., аn их квадратами члены будут образовывать неубывающую последовательность, то получите сумму членов исходной последовательности; в противном случае получите их произведение.
2.43 Пусть даны целые числа а1 , а2 ,..., аn . Пусть М — наибольшее, т — наименьшее из них. Получите в порядке возрастания все целые числа из интервала (т, М), которые не входят в последовательность а1, а2,..., аn.
2.44 Присвойте переменной f значение true, если в некотором массиве нет нулевых элементов и при этом положительные элементы чередуются с отрицательными, в противном случае присвойте значение false.
2.45 Пусть даны натуральное число п, целые числа а, х1, х2 ,..., хп. Если в последовательности х1, х2 ,..., хп есть хотя бы один член, равный а, то получите сумму всех членов, следующих за первым таким членом, иначе найдите минимальный среди нечетных чисел последовательности
х1, х2 ,..., хп.
2.46 Пусть даны целые числа а1, а2,..., аn, среди которых могут быть повторяющиеся. Составьте новый массив из чисел, которые входят в последовательность по одному разу.
2.47 Пусть даны целые числа а1, а2,..., аn, среди которых могут быть повторяющиеся. Составьте новый массив из чисел, взятых по одному из каждой группы равных членов данной последовательности.
2.48 Пусть даны натуральные числа k, п, вещественные числа а1, а2,..., аk n. Получите последовательность max (а1, а2,..., аk), max (аk+1, аk+2,..., а2k ), ..., max (аk(n-1)+1 ,..., аk n).
2.49 В массиве из п элементов подсчитайте количество четверок аi, аi+1, аi+2, аi+3, идущих подряд членов, из которых:
а) все члены равны;
б) все члены различны.
2.50 Пусть дан фрагмент программы:
Var
k: 0.. 9999:
d: array [ 1..4 ] of '0'.. '9';
а) запишите в массив d цифры числа k;
б) получите целое k, составленное из цифр массива d.
Дата добавления: 2015-07-08; просмотров: 706 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Пояснения к программе | | | Матрицы |