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

  • Математическая постановка задачи

  • Программа на языке программирования Pascal

  • Результаты работы программы с тестовыми данными

  • Задание №5 Задача

  • Контрольная по теории алгоритмов. Контрольная теория алгоритмов. Задача. Вычислить значения по следующим формулам при действительных значениях всех переменных


    Скачать 134.29 Kb.
    НазваниеЗадача. Вычислить значения по следующим формулам при действительных значениях всех переменных
    АнкорКонтрольная по теории алгоритмов
    Дата20.07.2022
    Размер134.29 Kb.
    Формат файлаdocx
    Имя файлаКонтрольная теория алгоритмов.docx
    ТипЗадача
    #634110





    Задание №1

    Задача.

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



    Математическая постановка задачи

    Исходные данные и обозначения:

    x – вводимое число;

    y – вводимое число;

    p – результат;
    Классификация по группам.

    Исходные данные: x – вводимое число вещественного типа,

    y – вводимое число вещественного типа

    Результат p – число вещественного типа.

    Создание алгоритма


    Рисунок 1.1. Блок – схема алгоритма


    Программа на языке программирования Pascal

    program lin1;

    var

    x, y, p : real;

    begin

    writeln('Введите значение x: ');

    readln(x);

    writeln('Введите значение y: ');

    readln(y);

    p := (Sqrt(Exp(Sqr(x))) + 1) / (Sqr(Sin(y)) + 2);

    writeln('Полученное p: ');

    writeln(p);

    end.

    Результаты работы программы с тестовыми данными
    Если x = 1, y = 1, то p = 0.9780832

    Задание №2

    Задача.

    Вычислить значение:



    Математическая постановка задачи

    Исходные данные и обозначения:

    x – вводимое число;

    y – результат;
    Классификация по группам.

    Исходные данные: x – вводимое число вещественного типа,

    Результат y – число вещественного типа.
    Создание алгоритма



    Рисунок 1.2. Блок – схема алгоритма

    Программа на языке программирования Pascal

    program Vet1;

    var

    x, y : real;

    begin

    writeln('Введите значение x: ');

    readln(x);
    if x <= -5 then

    begin

    y := (Exp(x) + 1) / (Exp(-x) + 1);

    end

    else

    begin

    if ((x > -5) and (x < 5)) then

    begin

    y := Sqr(x) - exp(3);

    end

    else

    begin

    y := Log(2 * x);

    end;

    end;

    writeln('Полученное y: ');

    writeln(y);

    end.
    Результаты работы программы с тестовыми данными
    Если x = 1, то y = -19.0855369

    Если x = -10, то y = 4.53999297624848E-05

    Если x = 10, то y = 2.99573227355399

    Задание №3

    Задача.Составить программу для вычисления суммы бесконечного ряда с использованием оператора цикла. Сравнить полученное на персональном компьютере значение суммы ряда со значением, вычисленным аналитически. Точность вычислений и количество членов ряда вводятся с экрана.



    Математическая постановка задачи

    Исходные данные и обозначения:

    x – вводимое число;

    eps – точность вычислений;

    i – счетчик;

    f – слагаемое ряда;

    s – сумма ряда.
    Классификация по группам.

    Исходные данные: x – вводимое число вещественного типа.

    Результат s – число вещественного типа.
    Создание алгоритма

    На рисунке 1.3 показан алгоритм вычисления суммы бесконечного ряда в виде блок – схемы.



    Рисунок 1.3. Блок – схема алгоритма вычисления суммы бесконечного ряда


    Программа на языке программирования Pascal
    program summ;
    var

    i: integer;

    x,s,f,eps:real;

    begin

    writeln('введите переменную x и eps');

    Readln(x, eps);

    s:=0;

    f:=3*x;

    i:=2;

    while abs(f)>eps do

    begin

    s:=s+f;

    Writeln('s=',s:8:5);

    f:=-f*3*x*(i-1)/i;

    i:=i+1;

    end;

    WriteLn('s=',s:8:5, ' ln(3x+1)=', ln(3*x+1):8:5);

    end.

    Результаты работы программы с тестовыми данными
    Если x = 0.2, eps = 0,001, то s = 0.47040 и ln (3x + 1) = 0.47000.
    Задание №4
    Задача.

    Дан массив целых чисел (n=20), заполненный случайным образом числами из промежутка [-10,40]:

    1. подсчитать количество элементов массива, значения которых больше заданного числа А и кратны 9;

    2. найти номер первого отрицательного элемента, делящегося на 5 с остатком 2


    Математическая постановка задачи

    Исходные данные и обозначения:

    arr – исходный массив целых чисел, состоящий из 20 элементов;

    i – параметр цикла;

    count – счетчик значений элементов, которые больше заданного числа А и кратны 9;

    result – номер первого отрицательного элемента, делящегося на 5 с остатком 2;

    A – число (вводится пользователем);

    flag – вспомогательная переменная;

    Классификация по группам.

    Исходные данные: A – вводимое число целого типа.

    Результат:

    count – число целого типа, result – число целого типа.



    Рисунок 1.4. Блок – схема алгоритма


    Программа на языке программирования Pascal

    program massiv1;

    const

    n = 20;

    var

    m : array [1..n] of integer;

    A, i, count, result : integer;

    f : boolean;

    begin

    writeln('Введите значение A: ');

    readln(A);

    f := false;

    for i := 1 to n do

    begin

    m[i] := Random(50)-10;

    if (m[i] > A) and (m[i] mod 9 = 0) then

    count:=count+1;

    if (f = false) and (m[i] < 0) and (m[i] mod 5 = -2) then

    begin

    f := true;

    result := i;

    end;

    end;

    writeln('Полученный массив: ');

    for i := 1 to n do

    begin

    write(m[i],' ');

    end;

    writeln;

    writeln('Количество элементов, которые больше A и кратны 9: ');

    writeln(count);

    writeln('Номер первого отрицательного элемента делящегося на 5 с остатком 2:');

    if result = 0 then

    begin

    writeln('нет числа');

    end

    else

    begin

    writeln(result);

    end;

    end.

    Результаты работы программы с тестовыми данными
    Введите значение A:

    10

    Полученный массив:

    -8 15 5 28 -4 31 -6 36 24 30 37 -7 18 -3 28 24 1 8 -6 7

    Количество элементов, которые больше A и кратны 9:

    2

    Номер первого отрицательного элемента, делящегося на 5 с остатком 2:

    12

    Задание №5
    Задача.

    Дан двумерный массив целых чисел размерностью (3х3), заполненный случайным образом числами из промежутка

    [-10,40]:

    1) заменить все симметричные элементы на нули;

    2) найти сумму элементов, находящихся на побочной диагонали
    .Математическая постановка задачи

    С помощью датчика случайных чисел задать элементы двумерного массива arr. Необходимо просмотреть его, сумму элементов, находящихся на побочной диагонали и заменить все симметричные элементы на нули.
    Исходные данные и обозначения:

    arr – исходный двумерный массив целых чисел, состоящий из 9 элементов;

    i, j, p, q – параметры цикла;

    n – размер массива;

    sum – сумму элементов, находящихся на побочной диагонали;

    Классификация по группам.

    Исходные данные:

    arr – исходный двумерный массив целых чисел

    Результат:

    sum – число целого типа.
    Создание алгоритма


    Рисунок 1.5. Блок – схема алгоритма

    Программа на языке программирования Pascal

    program massiv2;

    const

    n = 3;

    var

    arr : array [1..n, 1..n] of integer;

    i, j, p, q, sum : integer;

    begin

    for i := 1 to n do

    begin

    for j := 1 to n do

    begin

    arr[i][j] := Random(30)+10;

    end;

    end;

    writeln('Полученный массив: ');

    for i := 1 to n do

    begin

    for j := 1 to n do

    begin

    write(arr[i][j]:4);

    end;

    writeln;

    end;

    j := n;

    for i := 1 to n do

    begin

    sum := sum + arr[i][j];

    dec(j);

    end;

    for i := 1 to n do

    begin

    for j := 1 to n do

    begin

    for p := 1 to n do

    begin

    for q := 1 to n do

    begin

    if (arr[p][q] <> 0) and (arr[p][q] = arr[i][j]) and ((p <> i) or (q <> j))then

    begin

    arr[i][j] := 0;

    arr[p][q] := 0;

    end;

    end;

    end;

    end;

    end;

    writeln;

    writeln('Сумма элементов на побочной диагонали: ');

    writeln(sum);

    writeln('Замена всех симметричных на нули: ');

    for i := 1 to n do

    begin

    for j := 1 to n do

    begin

    write(arr[i][j]:4);

    end;

    writeln;

    end;

    end.
    Результаты работы программы с тестовыми данными
    Полученный массив:

    26 39 17

    39 12 39

    34 37 20
    Сумма элементов на побочной диагонали:

    63

    Замена всех симметричных на нули:

    26 0 17

    0 12 39

    34 37 20


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