Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЗ-17 - ЗАПИСЬ ВЫРАЖЕНИЙ И ОПЕРАТОРОВ.doc
Скачиваний:
5
Добавлен:
01.05.2019
Размер:
256 Кб
Скачать

Задание № 4. Использование условных операторов

  1. Разработайте консольную программу решения системы неравенств:

  1. Исходные данные – коэффициенты a1, b1, a2, b2 целого типа и вводятся с клавиатуры. Результат вещественного типа и выводится на экран.

  2. Для ввода используются следующие значения: a1=2, b1=-1, а2=4, b2=6.

  3. Листинг программы должен иметь примерно следующий вид:

program Zadanie_8;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

a1,a2,b1,b2: integer; // Описание исходных коэффициентов

r1,r2: real; // Описание выходных результатов

begin

writeln('Vvedite a1=');

readln(a1); // Ввести a1 и нажать Enter

writeln('Vvedite b1=');

readln(b1); // Ввести b1 и нажать Enter

writeln('Vvedite a2=');

readln(a2); // Ввести a2 и нажать Enter

writeln('Vvedite b2=');

readln(b2); // Ввести b2 и нажать Enter

r1:=-b1/a1; // Вычисление результатов

r2:=-b2/a2;

if (r1<0) and (r2<0) // Условный оператор

then case r1<=r2 of // Оператор выбора

false: writeln('Otvet: X<',r1:3:2);

true: writeln('Otvet: X<',r2:3:2);

end

else case r1>r2 of

false: writeln('Otvet: X<',r1:3:2);

true: writeln('Otvet: X<',r2:3:2);

end;

readln

end.

  1. В условный оператор включен оператор выбора, который в зависимости от того, какое из значений результатов меньше (или больше) выбирает путь вывода результата на экран.

  2. Откомпилируйте и выполните программу. При наличии ошибок, исправьте их.

  3. При отсутствии ошибок вы должны получить результат, представленный на рис. 3.

  4. Сохраните проект программы в папке \Мои документы\ЛЗ-21\Задание-04 под именем Zadanie_8.

Задание № 5. Использование операторов цикла

    1. Разработайте консольную программу вычисления таблицы значений функций и на отрезке [a, b] в точках xi=a+ih, где h = (ba)/m, m — заданное целое число. Значение шага h должно вычисляться один раз. Для этого:

  • Введите вещественные переменные a,b,h,x,y,z и объявите их Real.

  • Введите целые переменные m, i и объявите их Integer.

  • Организуйте ввод с клавиатуры исходного значения m=20.

  • Вычислите начальную и конечную точки отрезка: a=-/2; b=/2, используя стандартную функцию Pi.

  • Вычислите шаг изменения аргумента по формуле h=(b–a)/m.

  • Организуйте в цикле со счетчиком вычисление заданных функций и их выдачу на экран в виде таблицы.

  • Не забудьте в теле цикла изменять значение аргумента x.

    1. В эту же программу включите блок, вычисляющий сумму бесконечного ряда:

, где - факториал числа.

Вычисления прекратить, когда очередное значение an  , где  - заданная точность вычислений. Общий член ряда рассчитывается по формуле:

, n = 1, 2, 3, ….

Для определения суммы членов ряда следует использовать рекуррентную формулу, позволяющую находить текущий член ряда через ранее определенные:

, n = 1, 2, 3, …, причем a0=1.

При составлении программы считать, что точность задана =10-4 и определяется константой e.

    1. Листинг программы должен иметь примерно следующий вид:

program Zadanie_9;

{$APPTYPE CONSOLE}

uses

SysUtils;

const

e=1.0e-4; // Константа, определяющая точность

var

a,b,h,x,y,z: real; // Переменные первой задачи

m,i: integer;

s,an: real; // Переменные второй задачи

n: integer;

begin

{Первая задача}

writeln('Vvesdite znachenie m=');

readln(m); // Введите значения m и нажмите Enter

a:=-Pi/2; // Вычисление нижней границы интервала

b:=-a; // Вычисление верхней границы интервала

h:=(b-a)/m; // Вычисление шага изменения аргумента

x:=a; // Присвоение начального значения аргумента

for i:=1 to m+1 do // Цикл со счетчиком

begin

y:=1+x*sqr(cos(x))+sqr(sin(x))*sin(x); // Вычисление функций

z:=sqrt(abs(y));

writeln('x=',x:7:4,' y=', y:7:4,' z=',z:7:4);

x:=x+h; // Переход к следующему значению аргумента

end;

writeln;

{Вторая задача}

s:=0; // Обнуление суммы

an:=1; // Вычисление первого члена суммы

n:=1; // Начальное значение переменной цикла

while an>e do // Цикл с предусловием

begin

s:=s+an; // Накопление суммы

n:=n+1; // Изменение переменной цикла

an:=an*(exp(n*(ln(n/(n+1))))); // Вычисление очередного члена суммы

end;

writeln('Summa ',n,' elementov ravna =',s:9:6);

readln

end.

    1. О ткомпилируйте и выполните программу. При наличии ошибок, исправьте их.

    2. При отсутствии ошибок вы должны получить результат, представленный на рис. 4.

    3. Сохраните проект программы в папке \Мои документы\ЛЗ-21\Задание-05 под именем Zadanie_9.

    4. Посмотрите, как изменятся результаты, если задать значения m=10 и e=1.0e-8.

    5. Самостоятельно составьте программу решения второй задачи, но используя оператор цикла с постусловием (repeat ... until).