Даны два двумерных массива A и B (квадратные матрицы).
Матрица С= A* B, если в А существует строка простых чисел. В противном случае С= A+ B
# include <iostream.h>
# include <math.h>
void create ( int **, int);
void show( int **, int);
bool prime (int);
bool EA( int **, int);
void mult ( int **, int**, int**);
void add ( int **, int**, int**);
Void main()
{
int n;
cout<<”enter size=”;
cin>>n;
int **a, **b, **c;
a= new int*[n];
int i;
for (i<0;i<n;i++)
a[i]=new int[n];
b= new int*[n];
for (i<0;i<n;i++)
b[i]=new int[n];
c= new int*[n];
for (i<0;i<n;i++)
c[i]=new int[n];
create(a,n);
create(b,n);
if (EA(a,n)) mult(a,b,c);
else add(a,b,c);
cout<<”array c:”<<endl;
show(c,n);
delete[][]a;
delete[][]b;
delete[][]c;
}
void create(int**x, int n)
{
int i,j;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
cin>>x[i][j];
}
void show(int**x, int n)
{
int i,j;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
cout<<a[i][j]<<’ ’;
cout<<endl;
}
}
Bool prime(int x)
{
bool t;
int i;
if (x<=1) return false;
if (x==2) return true;
t=true;
i=2;
while (i<=sqrt(x)&&t)
{
if (x% i==0) t=false;
i++;
}
return t;
}
bool EA(int**x, int n)
{
bool p,q;
int i,j;
bool p=false;
for (i=0;i<n&&!p;i++)
{
bool q=true;
for (j=0; j<n&&q; j++)
if (!prime(x[i][j])) q=false;
p=q;
}
return p;
}
void mult ( int **x, int**y, int**z)
{
int i, j, k;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
{
z[i][j]=0;
for (k=0; k<n; k++)
z[i][j]=z[i][j]+x[i][k]*y[k][j];
}
}
void add ( int **x, int**y, int**z)
{
int i, j;
for (i=0; i<n; i++)
for (j=0; j<n; j++)
z[i][j]= x[i][k]+y[k][j];
}
ALGEBRA OF SETS
Алгебра множеств
Пусть A,B,C ‘элементы P(Z). Z – множество целых чисел.
P(Z) – множество всех подмножеств Z.
Определить операции над множествами.
C=A U B – объединение множеств
C=A ^ B – пересечение множеств
C= A-B – разность множеств
C=(A-B)U(B-A) - симметрическая разность.
#include<iostream>
/////////////////////////////////
void create_set(int* x,int n)
{
int i,m;
for(i=0;i<n;i++ )
x[i]=0;
char ch=’y’;
while (ch==’y’ || ch==’Y’)
{
cout<<”enter element of set m=’;
cin>>m;
x[m]=1;
cout<<” continue enter element? – ‘y’/’n’ ch=“;
cin>>ch;
}
}
////////////////////////////////
void show_set(int* x,int n )
{
int i;
cout<<”{ “;
for(i=0;i<n-1;i++)
if (x[i]) cout<<i<<” , “;
cout<<x[n-1]<<” } “<<endl;
}
////////////////////////////////////
void union(int* x,int* y,int* z, int n)
{
int i;
for(i=0;i<n-1;i++)
z[i]=x[i]||y[i];
}
////////////////////////////////
void intersection(int* x,int* y,int* z, int n)
{
int i;
for(i=0;i<n;i++)
z[i]=x[i]&&y[i];
}
////////////////////////////////
void substruction(int* x,int* y,int* z,int n)
{
int i;
for(i=0;i<n;i++)
z[i]=x[i] && !y[i];
}
////////////////////////////////
void complement(int* x,int* y, int n)
{
int i;
for(i=0;i<n;i++)
y[i]=!x[i];
}
////////////////////////////////
void main()
{
int I,n;
cout<<” ALGEBRA OF SETS”<<endl;
cout<<”enter size universal set n=”;
cin>>n;
int* a=new int[n];
int* b =new int[n];
int* c=new int[n];
cout<<”enter elements of set a:”<<endl;
create_set(a,n);
cout<<” elements of set a:”<<endl;
show_set(a,n);
cout<<”enter elements of set b:”<<endl;
create_set(b,n);
cout<<” elements of set b:”<<endl;
show_set(b,n);
union(a,b,c,n);
cout<<” elements of set c=aUb:”<<endl;
show_set(c,n);
intersection(a,b,c,n);
cout<<” elements of set c=a*b:”<<endl;
show_set(c,n);
substruction(a,b,c,n);
cout<<” elements of set c=a-b:”<<endl;
show_set(c,n);
complement(a,c,n);
cout<<” elements of set c=!a:”<<endl;
show_set(c,n);
}
Лекция
Табулирование интегральной функции.
Вычислить значение функции
в заданных точках t1, …, tm с точностью e. Входными данными программы являются числа m, a, b, e и массив t[1: m]. Выходные данные – массив y[1: m], где . В программе предусмотреть:
- функцию, вычисляющую значение F(x, t), с формальными параметрами x и t;
- функцию вычисления интеграла по одной из квадратурных формул с формальными параметрами: границы интегрирования a, b, точность вычисления интеграла e, функция F(x, t) и значение ее параметра t.
Исходные данные
I. Квадратурные формулы для вычисления интеграла (всюду ):
а) формула прямоугольников
;
За приближенное значение интеграла принимается такое, при котором .
II. Подынтегральная функция. Представим
.
Функция y (x):
;
Функция j (z):
;
III. Числовые данные
a | b | e | M | t1 | t2 | t3 | t4 | t5 | t6 | |
а) | 0,1 | -3,7 | 1,8 | 7,2 | - | - | - |
// integral_function
//arb2013_integral_function
#include<iostream.h>
#include<fstream.h>
#include<math.h>
#include<iomanip.h>
#include<string.h>
const int lengthColumn=20;
const int Indent=7;
const int lengthTable=43;
//////////////////////////
double Fi(double x)
{
return cos(x)*cos(x);
}
///////////////////////////////
double Psi(double x)
{
return (1-x*x)/(1+x*x);
}
/////////////////////////
double F(double x,double t)
{
return Psi(x)*Fi(x+ t/(1+x*x));
}
///////////////////////////////////////
void create(ifstream &f, double x[], int n)
{
int i;
for(i=0;i<n;i++) f>>x[i];
}
/////////////////////////////////////////
void show(ofstream &f, double x[], int n)
{
int i;
for(i=0;i<n;i++)
f<<x[i]<<' '; f<<endl;
}
/////////////////////////////////////////
double Integral(double a, double b, double e, double t)
{
double h,J1,J2;
int i,n;
n=1; h=(b-a)/n;
J2=h*F(a+h/2, t);
do
{
J1=J2;
n=n*2;
h=(b-a)/n;
J2=0;
for (i=0;i<=n-1;i++)
J2=J2+F(a+(2*i+1)*h/2,t);
J2=J2*h;
}while (fabs(J2-J1)>e);
return J2;
}
//////////////////////////////////////
void star(ofstream &f, int n, int m)
{
f.width(n);
int i;
for(i=0;i<m;i++)
f<<'*';
f<<endl;
}
/////////////////////////////////////
void star1(ofstream &f, int n, int m)
{
f.width(n); f<<'*';
int i;
for(i=0;i<m;i++)
{
f.width(lengthColumn+1);
f<<'*';
}
f<<endl;
}
//////////////////////////////////////
void table(ofstream &f,double* x,double* y,int m, char a[2][15])
{
int i;
f<<endl;
star(f,Indent+1,lengthTable);
star1(f,Indent+1,2);
f.width(Indent+1);
f<<'*';
for(i=0;i<2;i++)
{
f.width(10);
f<<a[i];
f.width(11);
f<<'*';
}
f<<endl;
star1(f,Indent+1,2);
star(f,Indent+1,lengthTable);
for(i=0;i<m;i++)
{
f.width(Indent+1);
f<<'*';
f.width(lengthColumn-5);
f<<x[i];
f.width(6);
f<<'*';
f.width(lengthColumn-5);
f<<y[i];
f.width(6);
f<<'*';
f<<endl;
star1(f,Indent+1,2);
star(f,Indent+1,lengthTable);
}
}
/////////////////////////////
void main()
{
ifstream in("arb.txt");
ofstream out("integral.txt");
double a,b,eps;
int m,i;
char name_task[80];
char name_x_y[2][15];
in.getline(name_task,80);
for(i=0;i<2;i++)
in>>name_x_y[i];
out<<name_task<<endl;
for(i=0;i<2;i++)
out<<name_x_y[i]<<' ';
out<<endl;
in>>a>>b>>eps>>m;
out<<"a= "<<a<<endl;
out<<"b= "<<b<<endl;
out<<"eps= "<<eps<<endl;
out<<"m= "<<m<<endl;
double* t, *y;
t=new double[m];
y=new double[m];
create(in, t,m);
out<<"arguments : "<<endl;
show(out,t,m);
for(i=0;i<m;i++)
y[i]=Integral(a,b,eps,t[i]);
out<<"value of integeral"<<endl;
show(out,y,m);
out<<endl;
out<<setw(15+strlen(name_task))<<name_task<<endl;
table(out,t,y,m,name_x_y);
in.close();
out.close();
delete []t;
delete []y;
}
////////////////////////////////////////
Файл arb.txt
Calculate integral.
x[i] y[i]
0 1 0.001 3 -3.7 1.8 7.2
//////////////////////////////////////
Файл integeral.txt
Calculate integral.
x[i] y[i]
a= 0
b= 1
eps= 0.001
m= 3
arguments :
-3.7 1.8 7.2
value of integeral
0.406703 0.0658141 0.335945
Calculate integral.
*******************************************
* * *
* x[i] * y[i] *
* * *
*******************************************
* -3.7 * 0.406703 *
* * *
*******************************************
* 1.8 * 0.0658141 *
* * *
*******************************************
* 7.2 * 0.335945 *
* * *
*******************************************