
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
- •Void _tmain(int argc, _tchar* argv[])
Void _tmain(int argc, _tchar* argv[])
{
printf ("Frolov Oleg, Zada4a 18. S treygolinika po formyle Gerona");
cin.get();
system ("cls");
double a1, b1, c1, a2, b2, c2, p1, p2, s1, s2, summa, raznost;
// вводим стороны
printf("a1:");
scanf("%lg", &a1);
printf("b1:");
scanf("%lg", &b1);
printf("c1:");
scanf("%lg", &c1);
printf("a2:");
scanf("%lg", &a2);
printf("b2:");
scanf("%lg", &b2);
printf("c2:");
scanf("%lg", &c2);
p1=(a1+b1+c1)/2; // для формулы герона нужны коэф. равный пол сумме всех сторон
p2=(a2+b2+c2)/2; // второй треугольник
s1=sqrt(p1*(p1-a1)*(p1-b1)*(p1-c1)); // собственно формула Гурона. сумма треугольника = корень квадратный из произведения коэф. и разности коэф и соответствующих сторон.
s2=sqrt(p2*(p2-a2)*(p2-b2)*(p2-c2)); // 2-ой треугольник
// на мой взгляд циклы избыточны но пусть будут
// после до срока...циклы отнюдь не избыточны. Если не напишите, то Вас могут попросить их дописать.
if (s1<0)
{
printf("\n ERROR, treygol'nika 1 net");
}
else
{
printf("s1=%lg", s1);
}
if(s2<0)
{
printf("\n ERROR, treygol'nika 2 net");
}
else
{
printf("s2=%lg",s2);
}
summa=s1+s2; // сумма
raznost=s1-s2; // разность
printf("\n summa=%lg \n raznost=%lg", summa, raznost);
cin.get();
cin.get();
}
// 19.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "iostream"
using namespace std;
double f (double x)
{
return 1/x;
}
Void _tmain(int argc, _tchar* argv[])
{
printf("Frolov Oleg, Zada4a 19. Integral metodom trapecii (ln2 = integral ot 2 do 1 funkcii d(x)/x");
cin.get();
system ("cls");
double a, b, e, h, m1, m2, m3, m4, d;
// a и b - предел интегрирования
//h-длина шага
//m1-предыдущее приближение
//m2-полусумма у0 и уn
//m3-сумма у1+..+уn-1
//m4-текущее приближение для S
//d-модуль разности 2х посл.приближений
//e-точность вычислений
//n - кол-во отрезков разбиения
int n=7, i; // задаем для точности. я изменю 4 на 7. мне так больше нравиться. На самом деле чем больше будет n, тем точнее получиться результат.
// примечание. проверил с 4....кто у вас информатику ведет? ответ-то не праивльный будет! малова-то число разбиения.
printf("a=");
scanf("%lg", &a);
printf("b=");
scanf("%lg", &b);
printf("e=");
scanf("%lg", &e);
m1=5; // мне не совсем понятно почему приближение исходное мы берем равным 5. вероятно по тому, что оно гарантированно не попадет. я поменяю на 100. мне так больше нравиться.
m2=(f(a)+f(b))/2; // ну тут вроде понятно. берему полусумму значений функции на концах отрезка на котором интергрируем
do
{
h=(b-a)/n; // вообще говоря, длина отрезка или по другому - шаг
m3=0; // приравниваем нулю, так как потом в цикле суммируем.
for(i=0; i<=n; i++)
{
m3=m3+f(a+i*h); // вот тут. считаем сумму всех значаений функции в узлах (узлов(а1, а2 и тд) будет на 1 больше, чем отрезков) следует из условия
//i<=n (вообще говоря несколько сомнительная запись. не понял зачем мы приравняли. ну да Бог с ним.
}
m4=h*(m2+m3); // это есть площадь всех трапеций)) с её помощью и считаем интеграл. (условно говоря, можно было и не выносить m2 из цикла, но тогда
// он каждый раз считал бы в цикле, чем бы его перегружал.
d=fabs(m1-m4); // вообще говоря, это и есть точность вычисления метода
m1=m4; // присваемваем значение
n=n*2; // увеличиваем число отрезков разбиения, на случай, если нужная точность не достигнута)
}
while(d>e); // заканиваем цикла
printf("\n s=%lg", m4);
cin.get();
cin.get();
}
// в целом долго разбирался. просто формулу разбили не плохо так. проверил значение. Ответ нормальный выдает. считает нормально. но всё одно не слишком точно.
//( в онлайн калькуляторе ln2 = 0,69314718056, а у нас при точности 10^(-9) ln2 =0.69327
// 20.2.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include "iostream"
using namespace std;
double f (double x, double y)
{
return -x/y;
}