Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

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

Читайте также:
  1. Массивы
  2. Массивы
  3. Массивы как аргументы функций. Функция сортировки массива методом пузырька.
  4. Несогласные интрузивные массивы
  5. Статические массивы
  6. Указатели и массивы. Адресная арифметика.

 

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 образуют неубывающую последовательность (b1b2 ≤...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 Составить программу объединения двух упорядоченных последо­вательностей чисел a1a2 ≤...an и b1b2 ≤...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, где bi — среднее арифметическое всех членов последовательности а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,..., аkn. Получите последовательность 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 | Нарушение авторских прав


Читайте в этой же книге: Вычисление функций | Пояснения к программе | Пояснения к программе | Обработка текстов | Пояснения к программе | Процедуры и функции | Пояснения к программе | Пояснения к программе | Множества | Пояснения к программе |
<== предыдущая страница | следующая страница ==>
Пояснения к программе| Матрицы

mybiblioteka.su - 2015-2024 год. (0.021 сек.)