Главная страница
Навигация по странице:

  • Решение Сначала напишем программу вывода первого отрицательного члена последовательности. Для этого воспользуемся оператором цикла while(условие) do…

  • Программирование. Вариант 10 Задание 1


    Скачать 93.81 Kb.
    НазваниеВариант 10 Задание 1
    Дата28.10.2022
    Размер93.81 Kb.
    Формат файлаdocx
    Имя файлаПрограммирование.docx
    ТипРешение
    #759713

    Вариант 10
    Задание 1. Ввести значения четырех чисел x1, x2, x3, x4. Вычислить значения переменных y1, y2, y3, z (если это возможно) при условии, что:

    ; ; ; .

    Значения y1, y2, y3, z вывести на экран.

    Решение.

    Для решения поставленной задачи, прежде всего, определимся с областью допустимых значений аргументов и выражений всех заданных функций.

    Ясно, что функция y1 будет иметь смысл только тогда, когда x1>0

    Функция y2 существует при (x2-x3x4) >0, поскольку логарифм отрицательных чисел и нуля не существует. Для вычисления логарифма на языке Pascal необходимо подключить дополнительно модуль Math.

    Функция y3 существует только когда существует функция tg(x3-x4)

    Функция тангенса на языке паскаль может быть вычислена через отношение tg(x3-x4) = Sin(x3-x4)/Cos(x3-x4).

    Таким образом, функция y3 имеет смысл только тогда, когда Cos(x3-x4) ≠ 0.

    Функция z имеет смысл только тогда, когда y1+y2+y3 ≥ 0.

    Реализуем данные вычисления на языке Pascal и в качестве проверки работоспособности программы приведем несколько тестовых примеров, показывающих правильные вычисления, производимые нашей программой.

    Для тестовых примеров возьмем:

    1. Все нулевые значения аргументов x1-x4.

    2. Любые числа x1-x4 такие, чтобы функция z была неопределена.

    3. Любые числа x1-x4 такие, чтобы функция z была определена.

    Program lab2;

    uses crt,Math;

    var x1,x2,x3,x4,y1,y2,y3,y4,z:real;

    t:boolean;

    begin

    writeln('Enter x1: '); Readln(x1);

    writeln('Enter x2: '); Readln(x2);

    writeln('Enter x3: '); Readln(x3);

    writeln('Enter x4: '); Readln(x4);

    t:=true;

    if (x1>0) then

    begin

    y1:=1/Sqrt(x1);

    writeln('y1= ',y1);

    end

    else

    begin

    t:=false;

    writeln('y1 doesnt exist');

    end;

    writeln;
    if ((x2-x3*x4)>0) then

    begin

    y2:=ln(x2-x3*x4);

    writeln('y2 = ',y2);

    end

    else

    begin

    t:=false;

    writeln('y2 does not exist');

    end;

    writeln;
    if (Cos(x3-x4)<>0) then

    begin

    y3 := Sin(x3-x4)/Cos(x3-x4);

    writeln('y3= ',y3);

    end

    else

    begin

    t:=false;

    writeln('y3 does not exist');

    end;

    writeln;
    if (t=true) then

    begin

    if ((y1+y2+y3)>=0) then

    begin

    z:=Sqrt(y1+y2+y3);

    writeln('z= ',z);

    end;

    end

    else writeln('z does not exist');

    writeln;

    readln;

    end.



    Рисунок 1 – Тестовый пример 1


    Рисунок 2 – Тестовый пример 2


    Рисунок 3 – Тестовый пример 3


    Задание 2. Составить программу нахождения первого положительного члена последовательности an = (n3 – 14n)/n!, n = 1, 2, 3,… . Вывести его значение и номер. Найти произведение всех отрицательных членов последовательности. Вывести результат на экран.

    Решение

    Сначала напишем программу вывода первого отрицательного члена последовательности. Для этого воспользуемся оператором цикла

    while(условие) do…

    Для вычисления факториала числа воспользуемся циклом for i:=1 to n do. Поскольку в нашем случае число n не может быть отрицательным, нулевым или вещественным, то дополнительных проверок для числа n проводить не нужно.

    Проанализируем заданную последовательность an = (n3 – 14n)/n!

    Совершенно очевидно, что n! не может быть отрицательным числом.

    Тогда отрицательной может быть только часть n3 – 14n

    Понятно, что при целых положительных n мы имеем:

    А поскольку n – это целое положительное число, то ближайшее n, при котором последовательность станет положительной, является n=4 (заметим также, что при n≥4 члены последовательности будут всегда положительными).

    Проверим данное утверждение на программе lab3.
    program lab3;

    uses crt;

    var n,i:integer;

    faktor,a:real;

    begin

    clrscr;

    a:=0;

    n:=0;

    while (a<=0) do

    begin

    faktor:=1;

    inc(n);

    for i:=1 to n do faktor:=faktor*i;

    a:=(n*n*n-14*n)/faktor;

    end;

    writeln('An = ',a);

    writeln('n= ',n);

    readln;

    end.



    Рисунок 4 – проверка выполнения программы

    Проверка правильности расчета A4:

    Далее модифицируем программу так, чтобы на каждой итерации цикла while() в случае, если значение члена последовательности An отрицательное, то мы его умножаем на число p, где p – это произведение всех отрицательных членов последовательности.
    program lab31;

    uses crt;

    var n,i:integer;

    faktor,a,p:real;

    begin

    clrscr;

    a:=0;

    n:=0;

    p:=1;

    while (a<=0) do

    begin

    faktor:=1;

    inc(n);

    for i:=1 to n do faktor:=faktor*i;

    a:=(n*n*n-14*n)/faktor;

    if (a<=0) then p:=p*a;

    end;

    writeln('An = ',a:1:3);

    writeln('n = ',n);

    writeln('P = ',p:1:3);

    readln;

    end.



    Рисунок 5 – проверка выполнения программы

    В результате, мы получаем произведение всех отрицательных членов последовательности равным p= - 325.

    Задание 3. Заполнить матрицу 10х10 следующим образом:



    Вывести заполненную матрицу на экран компьютера или на принтер. Найти сумму нечетных элементов матрицы, вывести полученный результат.

    Решение
    Для выполнения данного задания мы используем двумерный массив, в котором последовательно выводим все элементы сначала по строкам, а затем по столбцам на экран. Затем, проверяем для каждого элемента массива – является ли оно нечетным. Если нечетное, то прибавляем к общей переменной sum.
    program lab4;

    uses crt;

    var A:array[1..10,1..10] of integer; i,j,sum:integer;

    begin

    clrscr;

    sum:=0;

    writeln('Enter the matrix 10x10');

    writeln('');

    for i:=1 to 10 do

    for j:=1 to 10 do

    begin

    if i=j then A[i,j]:=i

    else

    begin

    if i>j then A[i,j]:=j

    else

    A[i,j]:=i; end;

    end;

    for i:=1 to 10 do

    begin

    for j:=1 to 10 do

    write(A[i,j]:3);

    writeln;

    writeln;

    end;

    for i:=1 to 10 do

    begin

    for j:=1 to 10 do

    if (A[i,j]<>0) and (A[i,j] mod 2=1) then

    begin

    sum:=sum+A[i,j];

    end;

    end;

    writeln('summa nechetnyh = ',sum);

    readln; end.




    Рисунок 6 – проверка выполнения программы

    Проверим, правильно ли программа сосчитала сумму нечетных элементов. Для этого сложим все числа 1, 3, 5, 7, 9:



    Результат расчета совпадает с результатом ,выдаваемым программой, следовательно, программа ведет верный расчет.


    написать администратору сайта