Мегаобучалка Главная | О нас | Обратная связь


Алгоритм вычисления знаменателя следующий:                          



2020-02-03 223 Обсуждений (0)
Алгоритм вычисления знаменателя следующий:                           0.00 из 5.00 0 оценок




¨ Присваиваем функции значение Flag:=True;

¨ Вычисляем знаменатель и присваиваем переменной х2 выражение в знаменателе:                             х2:=12.0*с+a-b;

¨ Если знаменатель равен нулю (х2=0), функция Flag принимает значение равное False и управление передается в основную программу ( Exit).

¨ Если знаменатель не равен нулю, значение функции Flag остается равным True  и значения функции и переменной х2 передаются в основную программу.

В этом фрагменте использован условный оператор if- then - см. [4].

 

Непосредственно значение выражения определим с помощью функции F. Функция F описана как Real. Переменные a, b, c (входные) передаются из основной программы. Значение функции F вычисляется и передается в основную программу.

Алгоритм вычисления значения выражения:

¨ вычисляем значение выражения в числителе : х1:=ArcTan(b)+c*b-a/4;

¨ присваиваем функции F значение исходного выражения: F:=x1/x2 и управление передается в основную программу.

 

Ввод переменной С осуществляем с помощью процедуры InputC. В заголовке процедуры описан формальный параметр-переменная: Var с : integer - получаемое значение вводимой переменной.

Алгоритм работы процедуры InputC:

¨ В цикле вводим с клавиатуры значение переменной сL, одновременно проверяется находится ли значение сL в диапазоне -32768 ... +32767 (диапазон значений для целых чисел типа INTEGER). Тело цикла расположено между Repeat ...и ... Until. Подробнее о циклах см. [4].

¨ Переменной с присваиваем значение равное целой части (функция trunc) переменной cL                  c:= trunc( cL);

¨ Полученное значение переменной с передается в основную программу.

Алгоритм выполнения главной программы:

В цикле Repeat .... Until(ch=’n’) or (ch:=’ N’) выполняем ввод переменных , проверку знаменателя на ноль и вычисление значения выражения для одного комплекта данных a, b, c:

· Вводим значение переменной а:          Readln(а);

· Вводим значение переменной b:          Readln(b);

· Обращаемся к процедуре InputC(с) для ввода значения целочисленной переменной c (значение с передается в основную программу из процедуры InputC).

· Проверяем значение функции Flag. Если оно True , то выводим значение выражения на экран, иначе управление переходит на метку L1, повторяем ввод переменных a, b, c до тех пор, пока знаменатель примет значение, отличное от нуля.

· После вывода результата на экране дисплея появляется сообщение - Опять? (y/n), переменной ch присваивается значение нажатой клавиши (оператор ReadKey читает символ с клавиатуры - N или Y). Если вы нажали N, выполнение программы заканчивается, если нажали клавишу Y, - управление передается на начало цикла и вы можете повторить вычисление с новыми значениями переменных a,b,c.

 


ПРИЛОЖЕНИЕ 3

Пример выполнения контрольной работы № 2

ЛИСТИНГ ПРОГРАММЫ Work2.pas                                                                                                                                                      

Program Work2;

{Вариант 30:   a*b/4, если    b > a

             X =  -55,    если    b = a

                        (b - 5)/a, если    b < a

     }

Uses CRT;

Const

inv1='Повторите ввод';

inv2='Деление на ноль!!!!!!! ';

inv3='Результат ';

inv4='выходит за диапазон [-32768..32767]!!!!';

inv5='Вводимое значение ';

invA='A';

invB='B';

Label L1;

Var

a,b,x : Integer;

ch : Char;

 

 {Вычисление значения X с проверкой на допустимый диапазон

                            для переменной типа INTEGER}

function F (a,b:Integer; Var x:Integer) : Boolean;

Var x1 : Real;

  s1 : String;

Begin

F:=True;

if b>a then x1:=b/4.0*a  {Только так, иначе будет ошибка вычисления!!!!}

else if b=a then x1:=-55

  else if a=0 then

     Begin

         s1:=inv2+inv1;

         Writeln(s1);

          F:=False;

          Exit;

     End

   else x1:=(b-5.0)/a;

{------ Проверка результата на допустимый диапазон ------}

if (x1>=-32768)and(x1<=32767) then x:=trunc(x1)

  else

     Begin

          s1:=inv3+inv4;

          Writeln(s1);

          Writeln(x1);

          Writeln(inv1);

           F:=False;

           Exit;

    End

End;


{Процедура ввода исходного значения переменной А с проверкой на область

допустимых значений}

Procedure Input(Var A:integer; inv:String);

Label L;

Var aL :Real;

  s1 : String;

Begin

L:

Write('Введите значение '+inv,'===>');

Readln(aL);

if (aL>=-32768)and(aL<=32767) then A:=trunc(aL)

  else

       Begin

           s1:=inv5+inv4;

           Writeln(s1);

           Writeln(inv1);

           goto L;

       End

End;

 

                                   {Главная программа}

Begin

Repeat

   ClrScr;

   Writeln('              Вариант 30');

   Writeln('       a*b/4, если    b > a');

   Writeln(' X = -55,    если    b = a');

   Writeln('      (b - 5)/a, если    b < a');

   Writeln;

L1:

   Input(b,invB);

   Input(a,invA);

   if F(a,b,x) then Writeln ('x=',x)

    else goto L1;

  Writeln('Опять? (y/n)');

  ch:=ReadKey;

Until (ch='n') or (ch='N');

End.

В контрольной работе №2 необходимо вычислить значение целочисленной переменной  Х в зависимости от значений тоже целочисленных переменных a и b  c учетом области допустимых значений.

Программе присвоено имя Work2:

· В фигурных скобках (комментарий) записано условие задачи варианта 30.

· В поле вызова библиотечных модулей USES записан модуль CRT.

· В поле задания констант определены значения строковых констант: inv1, inv2, inv3, inv4, inv5, invA, invB.

· В поле меток описана метка L1.

· В поле описания переменных описаны переменные - a, b, x : integer; ch : char.

· Далее следуют описания функции F и процедуры Input.

· Записана главная программа, которая вызывает нужные процедуры и функции, согласно алгоритму решения задачи.

Функция F определена как BOOLEAN. В заголовке функции описаны входные параметры a,b:integer (передаются из основной программы) и выходной параметр x:integer ( передается в основную программу). В теле функции используются локальные переменные x1: real и s1: string.




2020-02-03 223 Обсуждений (0)
Алгоритм вычисления знаменателя следующий:                           0.00 из 5.00 0 оценок









Обсуждение в статье: Алгоритм вычисления знаменателя следующий:                          

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (223)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)