Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по ОАП.docx
Скачиваний:
0
Добавлен:
24.09.2019
Размер:
29.6 Кб
Скачать

Int main()

{

SetConsoleOutputCP(1251);

const int n=2,m=2;

float a[n][m],b[n][m],c[n][m];

cout<<"Введите элементы 1-го массива:"<<endl;

vvod(&a[0][0],n,m);

cout<<"Введите элементы 2-го массива:"<<endl;

vvod(&b[0][0],n,m);

vyvod(&a[0][0],n,m);

vyvod(&b[0][0],n,m);

tran(&b[0][0],n,m);

rez(&a[0][0],&b[0][0],&c[0][0],n,m,m);

cout<<"a+b:"<<endl;

vyvod(&c[0][0],n,m);

return 0;

}

void vvod (float*a,int n,int m)

{

int i,j;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

cin>>a[i*m+j];

}

void vyvod( float*a,int n,int m)

{

int i,j;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

cout<<a[i*m+j]<<"\t"<<endl;

cout<<endl;

}

void tran(float*b,int n,int m)

{

int i,j;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

b[i*m+j]=b[j*m+i];

}

void rez(float*a,float*b,float*c,int n,int m,int l)

{

int i,j,k;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

{

c[i*l+j]=0;

for(k=0;k<m;k++)

c[i*l+j]+=a[i*m+k]*b[k*l+j];

}

}

#include<stdio.h>

#include<windows.h>

#include<math.h>

#include<stdlib.h>

float f(float);

void otrz();

void hord();

void newt();

void(*pf[])()={otrz,hord,newt};

int menu();

Int main()

{

SetConsoleOutputCP(1251);

while(1)

(*pf[menu()])();

return 0;

}

int menu()

{

char p;

do

{

system("pause");

system("cls");

printf("Каким методом решать уравнение?\n");

printf("1.Метод деления отрезка пополам (бисекций)\n2.Метод хорд\n3.Ньютона (метод касательных)\n");

scanf("%c",&p);

}

while(strchr("123",p)==NULL);

return p-49;

}

float f(float x)

{

return exp(0.724*x+0.3)-2.831;

}

void otrz()

{

float a=0,b=0,x,eps=0.001;

do

b++;

while(f(a)*f(b)>=0);

while(fabs(a-b)>eps)

{

x=(a+b)/2;

printf("x=%f\n",x);

if(f(a)*f(x)<0)

b=x;

else a=x;

}

x=(a+b)/2;

printf("Корень уравнения=%f\n",x);

}

void hord()

{

float a=0,b=0,h=1,x,eps=0.001;

do

b=b+h;

while(f(a)*f(b)>=0);

x=a;

while(fabs(f(x))>eps)

{

x=x-f(x)/(f(b)-f(x))*(b-x);

printf("x=%f\n",x);

}

printf("Корень уравнения=%f\n",x);

}

void newt()

{

float x=0,x0,eps=0.001;

printf("х начальное=%.f\n",x);

do

{

x0=x;

x=x0-f(x0)/(f(x0+0.001)-f(x0)/0.001);

printf("x=%f\n",x);

}

while(fabs(x0-x)>eps);

printf("Корень уравнения=%f\n",x);

}

#include<iostream.h>

#include<windows.h>

#include<math.h>

double integral(double,double,double(*pf)(double));

double f1(double);

double f2(double);

double f3(double);

Int main()

{

SetConsoleOutputCP(1251);

const double pi=3.14;

cout<<"Результат вычисления:"<<integral(0,1.7,f1)+integral(0,2,f2)+integral(0,3/(2*pi),f3);

cout<<endl;

return 0;

}

double f1(double x)

{

return x*atan(x);

}

double f2(double x)

{

return 1./(1+sqrt(x));

}

double f3(double x)

{

return 1./(5-3*cos(x));

}

double integral(double a,double b,double(*pf)(double))

{

double I1,I2=0,e=0.00001,h;

int i,n=2;

do

{

I1=I2;

h=(b-a)/n;

for(I2=0,i=1;i<=n;i++)

I2+=((*pf)(a+(i-1)*h)+(*pf)(a+i*h))*h/2;

n*=2;

}

while (fabs(I2-I1)>e);

return I2;

}

#include<stdio.h>

#include<windows.h>

#include<string.h>