Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Void plus (int x, int y, int z)




{

cout<<”x=”<<x<< endl; //4

cout<<”y=”<<y<< endl; // 5

cout<<”z=”<<z<< endl; // 10

z=x+y;

cout<<”z=”<<z<< endl; // 9

}

void plus1 (int x, int y, int &z)

{

cout<<”x=”<<x<< endl; //4

cout<<”y=”<<y<< endl; // 5

cout<<”z=”<<z<< endl; // 10

z=x+y;

cout<<”z=”<<z<< endl; // 9

}

Int plus2 (int x, int y)

{

cout<<”x=”<<x<< endl; //4

cout<<”y=”<<y<< endl; // 5

cout<<”x+y”<<x+y<< endl; // 9

return x+y;

}

 

Примечание

При вызове функций plus2() на месте аргументов могут быть любые выражения данного типа.

plus2(a+b*c,2*c);

plus2(5,7);

 

Передача массивов функции.

Пример 2.

# include <iostream.h>

const int n=10;

void create (int x[], int k);

//возможный вариант void vvod (int x[n])

void show (int x[], int k);

int max (int x[], int k);

 

void main()

{

int a[n];

create(a,n);

show (a, n);

cout<< “max(a,n)= ”<<max(a,n)<<endl;;

}

void create (int x[], int k)

{

int i;

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

{

cout<<”x[“<<i<<”]=”;

cin>>x[i];}

}

}

 

void show (int x[], int k)

{

int i;

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

cout<<x[i]<<”_”;

}

 

int max(int x[], int k)

{

int i;

int m;

m=a[0];

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

if (m<x[i]) m=x[i];

return m;

}

 

Лекция №9

Динамические массивы

 

Задание статического массива

const int n=10;

int a[n];

 

Задание динамического массива

int n;

cout<< “Enter n:”;

cin>>n;

int*b //указатель на первый элемент массива

b= new int[n];

delete [] b - после работы программы необходимо освободить память «кучи» от b.

В параметрах функций динамический массив задается так же, как и статический

 

void vvod (int x[], int n);

Или

 

void vvod (int *x, int n);

void vvod (int x[n])

 

Примечание

int*p;

p=new int;

*p=10; (косвенная динамическая память)

delete p; (возврат памяти)

 

Задание двумерного динамического массива

Память выделяется в 2 этапа: сначала под строку указателей на столбцы, а затем в цикле под каждый столбец.

int colstr; colstb;

cout<< “Enter colstr:”;

cin>> colstr;

cout<< “Enter colstb:”;

cin>> colstb;

int **b;

b=new int*[colstr];

for (int i<0;i<colstr;i++)

b[i]=new int[colstb];

 

Соответственно, необходимо delete[][]b;

В параметрах функций

void create (int **x, int n, int m);

void show(int **x, int n, int m);

 

Задача 1.

Даны два двумерных массива 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.





Поделиться с друзьями:


Дата добавления: 2016-12-06; Мы поможем в написании ваших работ!; просмотров: 615 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Логика может привести Вас от пункта А к пункту Б, а воображение — куда угодно © Альберт Эйнштейн
==> читать все изречения...

2303 - | 2226 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.