Блог

Задачник Абрамова № 11

zadachnik-abramova

§ 1. Арифметика действительных чисел. Вычисление по формулам.

11. Даны x, y, z. Вычислить а, b, если

zadachnik-abramova-11

C:

#include <stdio.h>;
#include <math.h>

int fac(int n)
{
	return !n ? 1 : n * fac(n - 1);
}

int main()
{
	float x,y,z,a,b;
	const float pi = 3.14;
	printf("x = ");
	scanf("%f",&x);
	printf("y = ");
	scanf("%f",&y);
	printf("z = ");
	scanf("%f",&z);
	/*a*/
	a = (sqrt(fabs(x-1))-pow(fabs(y),1/3))/(1+x*x/2+y*y/4);
	b = x*(atan(z)+exp(-(x+3)));
	printf("a)na = %fnb = %fn",a,b);
	/*b*/
	a = (3+exp(y-1))/(1+x*x*fabs(y-tan(z)));
	b = 1+fabs(y-x)+pow((y-x),2)/2+pow((y-x),3)/3;
	printf("b)na = %fnb = %fn",a,b);
	/*v*/
	a = (1+y)*(x+y/(x*x+4))/(exp(-x-2)+1/(x*x+4));
	b = (1+cos(y-2))/(pow(x,4)/2+pow(sin(z),2));
	printf("v)na = %fnb = %fn",a,b);
	/*g*/
	a = y+x/(y*y+fabs(x*x/(y+pow(x,3)/3)));
	b = 1+pow(tan(z/2),2);
	printf("g)na = %fnb = %fn",a,b);
	/*d*/
	a = (2*cos(x-pi/6))/(1/2+pow(sin(y),2));
	b = 1 + z*z/(3+z*z/5);
	printf("d)na = %fnb = %fn",a,b);
	/*e*/
	a = (1+pow(sin(x+y),2))/(2+fabs(x-2*x/(1+x*x*y*y)));
	b = pow(cos(atan(1/z)),2);
	printf("e)na = %fnb = %fn",a,b);
	/*j*/
	a = log(fabs((y-sqrt(fabs(x)))*(x-y/(z+x*x/4))));
	b = x-x*x/fac(3)+pow(x,5)/fac(5);
	printf("j)na = %fnb = %fn",a,b);
	return 0;
}

Pascal:

const pi = 3.14;
var x,y,z,a,b:real;

function pow(x,n:real):real;
var tmp:real;
begin
	tmp:= abs(x);
	if x < 0 then
		pow := (-1)*exp((n)*ln(tmp))
	else
		pow := exp((n)*ln(tmp));
end;

function fac(n:integer):longint;
begin
	if n <= 1 then
		fac := 1
    else
		fac := n*fac(n-1);
end;

function tan(x:real):real;
begin
	tan := sin(x)/cos(x)
end;

begin
	write('x = ');
	read(x);
	write('y = ');
	read(y);
	write('z = ');
	read(z);
	{a}
	a := (sqrt(abs(x-1))-pow(abs(y),1/3))/(1+x*x/2+y*y/4);
	b := x*(arctan(z)+exp(-(x+3)));
	write('a)',#13#10,'a = ',a:4:2,#13#10,'b = ',b:4:2,#13#10);
	{b}
	a := (3+exp(y-1))/(1+x*x*abs(y-tan(z)));
	b := 1+abs(y-x)+pow((y-x),2)/2+pow((y-x),3)/3;
	write('b)',#13#10,'a = ',a:4:2,#13#10,'b = ',b:4:2,#13#10);
	{v}
	a := (1+y)*(x+y/(x*x+4))/(exp(-x-2)+1/(x*x+4));
	b := (1+cos(y-2))/(pow(x,4)/2+pow(sin(z),2));
	write('v)',#13#10,'a = ',a:4:2,#13#10,'b = ',b:4:2,#13#10);
	{g}
	a := y+x/(y*y+abs(x*x/(y+x*x*x/3)));
	b := 1+pow(tan(z/2),2);
	write('g)',#13#10,'a = ',a:4:2,#13#10,'b = ',b:4:2,#13#10);
	{d}
	a := (2*cos(x-pi/6))/(1/2+pow(sin(y),2));
	b := 1 + z*z/(3+z*z/5);
	write('d)',#13#10,'a = ',a:4:2,#13#10,'b = ',b:4:2,#13#10);
	{e}
	a := (1+pow(sin(x+y),2))/(2+abs(x-2*x/(1+x*x*y*y)));
	b := pow(cos(arctan(1/z)),2);
	write('e)',#13#10,'a = ',a:4:2,#13#10,'b = ',b:4:2,#13#10);
	{j}
	a := ln(abs((y-sqrt(abs(x)))*(x-y/(z+x*x/4))));
	b := x-x*x/fac(3)+pow(x,5)/fac(5);
	write('j)',#13#10,'a = ',a:4:2,#13#10,'b = ',b:4:2,#13#10);
end.

Для обоих языков была разработана функция для поиска факториала fac(n), в качестве аргумента она принимает целое число, возвращает факториал этого числа. Для Pascal были разработаны отсутствующие в данном языке функции для возведения числа в степень и вычисления тангенса числа. Первая функция function pow(x,n:real):real в качестве аргументов принимает два вещественных числа x и n, вовращает число x возведенное в степень n. Вторая функция function tan(x:real):real в качестве аргумента принимает вещественное число и возвращем тангенс этого числа.

Комментариев нет

Ваш комментарий