программа на Паскале

  • Автор темы -
  • Дата начала
Статус
Закрыто для дальнейших ответов.

Гость
#1
математика:
на си:
Код:
// lab1.cpp лабораторная работа. задание 1.1.1
// вычисление Y при Хе(0.1;0.6)

#include "stdafx.h"
#include "math.h"
#include "windows.h"
#define PI 3.141593

int _tmain(int argc, _TCHAR* argv[])
{
char zx[] ="Лабораторная работа, задание 1.1.1\nВычисление Y при Хe(0.1;0.6)\n";
float x =0.0, y;
CharToOem(zx, zx);
printf(zx);
printf("BBOD :");
scanf("	%f", &x);
float m = pow(PI,2) - pow(x,2) + pow(exp(1.0),-1);
float st = 1/3.0;
y = pow(m, st) + tan((x-1)+1/7);
printf("Y=%.4f ", y);
getchar();
getchar();
return 0;
}
аналогичная на паскале:
Код:
		// lab1.cpp лабораторная работа. задание 1.1.1
// вычисление Y при Хе(0.1;0.6)
program lab1;
var x,y,z,c: real; //введены новые переменные для упрощения вычисления
begin
writeln('введите Xe(0.1;0.6) x=');
readln(x);
z:=(sin((x-1)/x)/cos((x-1)/x)); //вычисление тангенса
c:=exp((1/3)*ln(sqr(pi)+(1/exp(1)))); //вычисление куб корня
y:=c+z+(1/7);		//упрощенная формула
{далее идет распечатка полной формулы уравнения}
writeln('z =(sin((x-1)/x)/cos((x-1)/x))=',z:4:4);
writeln('c = exp((1/3)*ln(sqr(pi)+(1/exp(1))))=',c:4:4);
writeln('y = c+z+1/7=',y:4:4);
end.
но выводит неправильный ответ - разница в 0.2 десятых... можете подсказать в чем ошибка? проверяла маткадом - на си - правильно )
 
B

Black horse

Гость
#2
странно вообще говоря, попробуй тип extended вместо real. Хотя есть подозрение что в паскале функции косинус, синус и т.д. имеют меньшую точность чем в си
 
Статус
Закрыто для дальнейших ответов.