Текст программы на языке Паскаль
Program Example_11;
Var k, n, znak : integer; x, S, sl, st, E : real;
Begin
writeln;
write(‘Введите значение х = ‘);
read(х);
write(‘Введите количество слагаемых суммы N = ‘);
read(n);
write(‘Введите точность вычисления суммы Е = ‘);
read(Е);
S := 0;
znak := 1;
st := 1;
For k := 1 to n do begin
st := st*x;
S := S + znak*cos(k*x) / sqr(2*k-1) / st;
znak := - znak
end;
writeln(‘Вариант а) S = ’, S:6:5);
S := 0;
znak := 1;
st := 1;
k := 1;
repeat
st := st*x;
sl := cos(k*x) / sqr(2*k-1) / st;
S := S + znak * sl;
k := k + 1;
znak := - znak
until abs(sl) < E;
writeln(‘Вариант б) S = ’, S:6:5);
readln
end.
Данные для тестирования
1) Для x = 1, n = 3, Е = 0,04
2) Для x = 2, n = 4, Е = 0,0005
Для вычисления значений подобных выражений и подбора подходящих значений переменной х очень удобно пользоваться электронными таблицами Excel (рисунок 5.1).
Рисунок 5.1 – Вычисление отдельных слагаемых и суммы в Microsoft Excel
ЗАДАЧИ С ИСПОЛЬЗОВАНИЕМ МАССИВОВ
Массивом называется тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. Каждый элемент массива имеет свой номер (индекс) для одномерных массивов и совокупность номеров для многомерных. Индексы представляют собой выражения, чаще всего целого типа.
Все задачи этой темы делятся на два подраздела: лёгкие задачи и задачи средней сложности. Поскольку, при работе с массивом количество элементов в нём известно по условию задачи, то для обработки массивов наиболее часто используется оператор цикла с параметром (for).
Приведём примеры решения задач с использованием массивов.
|
|
Пример 6.1. Дан целочисленный массив А размера N. Вывести все содержащиеся в данном массиве четные числа, расположенные на нечетных местах в порядке возрастания их индексов, а также их количество K.
Решение задачи
Выберем схему решения поставленной задачи.
После того как будут введены элементы массива, с помощью оператора цикла с параметром (for) и условного оператора организуем проверку номера элемента на нечетность и значения элемента на четность. Для этого можно воспользоваться стандартной функцией языка Паскаль odd(x), которая возвращает истину, если х – нечетно, и ложь, если х – четное.
Если обозначить i – номер очередного элемента массива, тогда заданное в задаче условие можно записать с помощью логического выражения:
odd(i) and (not odd(abs(A[i])))
Если результатом этого выражения будет истина, то к переменной K прибавляем 1 и такой элемент массива выводим на экран. По окончании цикла на экран выводим получившееся К.
Блок-схема алгоритма – представлена на рисунке 6.1.
Текст программы на языке Паскаль
Program Example_12;
Var K, n, i : integer; A : array [1..30] of integer;
Begin
writeln;
write(‘Введите количество элементов массива N = ‘);
read(n);
write(‘Введите ‘, n, ‘целых чисел - элементов массива А:‘);
|
|
For i := 1 to n do
read(A[i]);
K := 0;
For i := 1 to n do
If odd(i) and (not odd(abs(A[i]))) then begin
K := K + 1;
writeln(‘A[‘, i, ’]= ‘, A[i])
end;
writeln(‘K = ’, K);
readln
end.
Рисунок 6.1 – Блок-схема алгоритма для примера 6.1
Данные для тестирования
1) Для n = 10, A = {5, 7, 8, 10, -12, 3, 1, 4, 6, 2}
ð A[3] = 8
A[5] = -12
A[9] = 6
Пример 6.2. Дан целочисленный массив {x} размера N и целое число a. Если в массиве {x} есть хотя бы один элемент, равный a, то получить сумму всех элементов, следующих за первым таким элементом. В противном случае вывести сообщение об отсутствии такого элемента.
Решение задачи
Выберем схему решения поставленной задачи. В этой задаче требуется:
1) определить имеется ли вообще в заданном массиве элемент, равный числу а;
2) если, такой элемент имеется, то запомнить его номер;
3) вычислить сумму элементов массива, предшествующих найденному элементу или вывести сообщение об отсутствии такового.
Чтобы запомнить номер искомого элемента, введём переменную K. Первоначально зададим K = 0.
После того как будут введены все элементы массива {x} и число а, с помощью оператора цикла с параметром (for) и условного оператора организуем поиск элемента, равного а. Как только будет найден первый такой элемент, присвоим его номер переменной K и, с помощью процедуры break, прервём дальнейшее выполнение цикла for, т.е. просмотр оставшейся части массива. Если мы проверим весь массив и элемента равного а не обнаружится, то значение переменной K останется равным нулю.
|
|
После завершения просмотра массива с помощью условного оператора проверим значение переменной K – если оно осталось равным нулю, то выведем сообщение об отсутствии элемента равного а, в противном случае с помощью оператора цикла for вычислим искомую сумму и выведем её значение.
Блок-схема алгоритма – представлена на рисунке 6.2.
Дата добавления: 2018-04-04; просмотров: 374; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!