Материалы сайта
Это интересно
Вычислительная практика I курс
Смаль Дмитрий, Ас-14 Работа №4.Вычисления с действительными числами. ЗАДАНИЕ № 1.(11) а) Даны гипотенуза и катет прямоугольного треугольника. Найти второй катет и радиус вписанной окружности. б) Описание метода решения: При решении данной задачи я использовал следующие формулы: Нахождение катета: b:=sqrt(sqr(c)-sqr(a)); Нахождение площади треугольника: S:=0.5*a*b; Нахождение полупериметра треугольника: p:=0.5*(a+b+c); Нахождение радиуса: r:=S/p; в) Описание тестовых примеров: 1)Пусть a=4 , а c=5 , 2)Пусть a=34 , а c=45, 3) Пусть a=5.6 , c=7.8. b=3, S=6, b=29.5, S=501.1, b=5.43, S=15.2, p=6, r=1. p=54.2, r=9.2 p=9.41, r=1.61 г) Текст программы: Program Treugolnik; Uses crt; Var a,b,c,S,p,r :Real; Begin Clrscr; Writeln( ‘Введите размер катета a:’ ); Readln(a); Writeln( ‘Введите размер гипотенузы, который больше катета (a) c: ‘); Readln(c); b:=sqrt(sqr(c)-sqr(a)); Writeln( ‘ Катет ’b:3:3); S:=0.5*a*b; Writeln( ‘ Площадь ‘,S:3:3); p:=0.5*(a+b+c); Writeln( ‘Полупериметр ‘,p:3:3); r:=S/p; Writeln( ‘ Радиус ‘,r:3:3); End. д) Результаты тестирования программы: Введите размер катета a: 4 34 5.6 Введите величину гипотенузы, которая больше катета (а) c: 5 45 7.8 1. Катет 3.000 2. Катет 29.479 3. Катет 5.430 Площадь 6.000 Площадь 501.140 Площадь 15.203 Полупериметр 6.000 Полупериметр 54.239 Полупериметр 9.415 Радиус 1.000 Радиус 9.239 Радиус 1.615 е) Во время реализации программы я попытался сделать такие ошибки: 1.) Я попытался название переменной начать с числа, система выдала ошибку: Identifier expected, это значит что в имени переменной на первом месте не может стоять число. 2.)Также я попробовал дать такое название переменной, которое начиналось бы с какого-либо синтаксического знака (например &), система выдала ошибку: Syntax error, это обозначает что допущена синтаксическая ошибка, т.е. название переменной не может начинаться с синтаксического знака. 3.)При написании программы я сделал ошибку в слове Program, которое написал с двумя “mm” , система выдала ошибку: BEGIN expected, это значит, что задана неправильная структура программы, таких идентификаторов не существует. 4.) Я попытался написать стандартный идентификатор с орфографической ошибкой, вместо Readln я написал Reeadln, ошибка:Unknown identifier, т.е. идентификатор не распознан. ж) Так как в своей программе переменным я присвоил тип REAL, то в моем случае это будут числа выходящие за “границы” {2.9E-39..1.7E38}, таковым положительным числом является {2.5E40}, а отрицательным {4.5E-45}. а) Переполнение-это выход из допустимого для определенного типа данных диапазона значений (в моем случае за верхнюю границу типа REAL) б) Исчезновение порядка – это когда при работе с действительными числами значение какой-то переменной выходит за нижнюю границу типа REAL. в) Данные при которых возникают эти ситуации: Исчезновение порядка: Я присвоил катету величину равную 2.5Е-28, а гипотенузе 2.2Е-27, в результате чего находимые величины стали равны нулю, что и свидетельствует об исчезновении порядка. Ожидаемый результат: b=2.16E-27 Переполнение: Когда я попытался присвоить катету величину 1.3Е30, а гипотенузе 1.4Е30, система выдала ошибку:Floating point overflow, что в переводе на русский язык значит переполнение. Ожидаемый результат: b=0.09E30 Смаль Дмитрий, АС-14 Работа № 4.Вычисления с действительными числами. Задание 2.(3) а)f(x,y)= 4?(y)2 + ?(x) + ( ln (x*y))*2*10-5 2.2 * tg |x| * ( ( y )2 – 2.25) б)Описание метода решения: Подстановка в функцию значений ‘ x ‘ и ‘ y ‘ в) Описание тестовых примеров: 1) Пусть x=2 и y=2, 2) Пусть x=3 и y=5, 3) Пусть x=2.6 и y=5.4. Для упрощения вычислений разобьем формулу на части : t= 4?(y)2 + ?(x) + ( ln (x*y))*2*10-5 ; c= 2.2 * tg |x| * ( ( y )2 – 2.25) ; 1) t=1.52, c=-8.41, f=-0.18 2) t=2.274, c=-7.134, f=-0.319 3) t=2.35, c=-35.61, f=-0.066 г) Текст программы: Program Second Edition; uses crt; Var t,f,x,y,c:REAL; Begin Clrscr; Writeln ( ‘ Введите коор-ты x и y ’ ); Readln (x,y); t:=sqrt(sqrt(sqr(y)+sqrt(x)))*(ln(x*y))*2E-5; Writeln ( ‘ Значение t=’,t:3:3); c:=2.2*sin(abs(x))/cos(abs(x))*(sqr(y)-2.25); Writeln ( ‘ Значение c= ‘,c:3:3); f:=t/c; Writeln ( ‘ Значение функции f= ‘, f:3:3); End. д) Результаты тестирования программы: Введите коор-ты x и y Введите коор-ты x и y Введите коор-ты x и y 2 3 2.6 2 5 5.4 Значение t=1.525 Значение t=2.274 Значение t=2.355 Значение c=-8.412 Значение c=-7134 Значение c=- 35.616 Зн. функ. f=-0.181 Зн. функ. f=-0.319 Зн. функ f=-0.066 е) При реализации программы я попытался допустить ошибку, написать cas вместо cos, в результате система выдала ошибку Unknown Identifier, что значит неизвестный идентификатор. При попытке рядом со знаком “ минус(-) “ поставить знак “ произведения(*) “ система выдала ошибку Error in expression,что значит невозможность постановки такого выражения. ж) Область определения функции: X > 0 ; Y > 0 ; Y< >1.5 ; X < > Пk/2, k € Z. Если исходные данные не входят в область определения, то система выдает следующие ошибки: при попытке присвоить’ y ’ значение 1.5 выдается ошибка:Division by zero, что означает деление на нуль, при попытке присвоить ‘ x ’ отрицательное значение выдается ошибка: Invalid floating point operation, что значит неверное значение ‘ x ’, т.е. оно не входит в область определения.