Программирование задач с использованием функций

Содержание

Слайд 2

Указатели и ссылки Описание указателя: * Пример: int *p; -5 *

Указатели и ссылки

Описание указателя:
<тип> *<идентификатор>
Пример: int *p;

-5

*

int *p;
p=new int;
*p=-5;

int *p,

c=-5;
p=&c;

ИЛИ

*

-5

c

p

p

0010

0001

0001

-5

переменная

адрес

значение переменной

Указатель – это переменная, которая содержит адрес другой переменной

Оператор & - взятие адреса

p

Слайд 3

Функции в С++ #Директивы препроцессору Глобальные данные (переменные, константы) Функция 1(список

Функции в С++

#Директивы препроцессору
Глобальные данные (переменные, константы)

Функция 1(список формальных параметров)
Локальные данные

Функция

2(список формальных параметров)
Локальные данные

Функция n(список формальных параметров)
Локальные данные

Основная функция main()
Локальные данные
Функция1(фактические параметры)
Функция2(фактические параметры)

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

Слайд 4

Общий вид функции: ( , , …) { тело функции return

Общий вид функции:

<тип возвращаемого значения> <имя функции> (<формальный параметр 1>, <формальный

параметр 2>, …)
{
тело функции
return <возвращаемое значение>;
}

Вызов функции:

<переменная>=<имя функции>(список фактических параметров);

Слайд 5

Примеры функций int IsSign (double a) { if(a>0) return 1; else

Примеры функций

int IsSign (double a)
{
if(a>0) return 1;
else if(a==0) return 0;
else return

-1;
}

int main()
{
int n,m;
cout<<"n=";
cin>>n;
m=IsSign(n);
switch(m)
{
case -1:cout<<"otritsat"< case 0:cout<<"NULL"< case 1:cout<<"polozhitel"< }
}

1. параметр-константа.

Слайд 6

void exgange (int &a,int &b) { int s=a; a=b; b=s; }

void exgange (int &a,int &b)
{
int s=a;
a=b;
b=s;
}
int main()
{
int n,m;
cout<<"n=";
cin>>n;
cout<<"m=";
cin>>m;
exgange(n,m);
cout<<"after exgange n="<

m="<}

2. параметр-переменная.

Слайд 7

Пример функций формирования и вывода массива #include #include using namespace std;

Пример функций формирования и вывода массива

#include
#include
using namespace std;
const

int n=6;
void input(int a[])
{
for(int i=0;i }
void output (int a[])
{
cout<<"Output matr>"< for(int i=0;i cout< cout< }
Слайд 8

Основная программа int main() { int f[n]; input(f); output(f); }

Основная программа

int main()
{
int f[n];
input(f);
output(f);
}

Слайд 9

Другой заголовок функции void input(int *a) { for(int i=0;i } void

Другой заголовок функции

void input(int *a)
{
for(int i=0;i }
void output (int *a)
{
cout<<"Output matr>"< for(int i=0;i

cout< cout< }
Слайд 10

Функции формирования и вывода матрицы const int n=6, m=4; void input(

Функции формирования и вывода матрицы

const int n=6, m=4;
void input( int a[][m])
{
for(int

i=0;i for(int j=0;j a[i][j]=rand()/100-100;
}
void output ( int a[][m])
{
cout<<"Output matr>"< for(int i=0;i {
for(int j=0;j cout< cout< }
}
Слайд 11

Основная программа int main() { int f[n][m]; input(f); output(f); }

Основная программа

int main()
{
int f[n][m];
input(f);
output(f);
}

Слайд 12

#include #include using namespace std; int** rezerv(int n, int m) {

#include
#include
using namespace std;
int** rezerv(int n, int m)
{
int **a=new int*

[n];
for(int i=0;i for(int j=0;j a[i]=new int[m];
return a;
}
void input( int **a,int m, int n)
{
for(int i=0;i for(int j=0;j a[i][j]=rand()/100-100;
}

Формирование матрицы с использованием указателей

а

Слайд 13

void dispose(int **a,int n, int m) { for(int i=0;i for(int j=0;j

void dispose(int **a,int n, int m)
{
for(int i=0;i for(int j=0;j delete a[i];
delete[] a;
}


void output ( int **a,int m,int n)
{
cout<<"Output matr>"< for(int i=0;i {
for(int j=0;j cout< }
}
int main()
{
const int n=6, m=4;
int **f;
f=rezerv(n,m); input(f,n,m); output(f,6,4);
}
Слайд 14

Примеры программирования Даны две матрицы А и С. Сформировать одномерные массивы

Примеры программирования

Даны две матрицы А и С. Сформировать одномерные массивы P

и Q из количества положительных элементов каждого столбца соответствующих матриц.

#include
#include
using namespace std;
typedef int matr[5][5];
typedef int mas[5];
void input(matr a, int n, int m)
{
for(int i=0;i for(int j=0;j a[i][j]=rand()/100-100;
}

Слайд 15

void output ( matr a, int n, int m) { cout

void output ( matr a, int n, int m)
{
cout<<"Output matr>"< for(int i=0;i {
for(int

j=0;j cout< cout< }
}
void form(matr a,mas b,int n, int m)
{
int kol;
for(int j=0;j {
kol=0;
for(int i=0;i if(a[i][j]>0)kol++;
b[j]=kol;
}
}
Слайд 16

void output_mas(mas a, int m) { cout for(int i=0;i cout cout

void output_mas(mas a, int m)
{
cout<<"massiv"< for(int i=0;i cout< cout<}
int main()
{
matr A,C; mas P,Q;
input(A,5,5);
output(A,5,5);
form(A,P,5,5);
output_mas(P,5);
input(C,5,5);
output(C,5,5);
form(C,Q,5,5);
output_mas(Q,5);
}

Слайд 17

Даны массивы A{7}, B{5}, С{9} и D{9}. Вычислить #include #include #include

Даны массивы A{7}, B{5}, С{9} и D{9}. Вычислить

#include
#include
#include


using namespace std;
void input(double a[], int n)
{
for(int i=0;i}
void output ( double a[], int n)
{
cout<<"Output mas>"< for(int i=0;i cout<}
double mult(double b[],int n)
{
double p=1.0;
for(int i=0;i return p;
}
Слайд 18

int main() { double a[7],b[5],c[9],d[9]; input(a,7);input(b,5);input(c,9);input(d,9); output(a,7);output(b,5);output(c,9);output(d,9); double p; p=(mult(a,7)+log(mult(b,5)))/(sin(mult(c,9))*sqrt(mult(d,9))); cout }

int main()
{
double a[7],b[5],c[9],d[9];
input(a,7);input(b,5);input(c,9);input(d,9);
output(a,7);output(b,5);output(c,9);output(d,9);
double p;
p=(mult(a,7)+log(mult(b,5)))/(sin(mult(c,9))*sqrt(mult(d,9)));
cout<<"p="<}

Слайд 19

Для целочисленных матриц А и В размерностью 10*10 сформировать одномерные массивы

Для целочисленных матриц А и В размерностью 10*10 сформировать одномерные массивы

P и Q, состоящие из числа элементов каждой строки матрицы, кратных 5, и найти наибольшие из них.

#include
#include
using namespace std;
typedef int matr[10][10];
typedef int mas[10];
void input(matr a, int n, int m)
{
for(int i=0;i for(int j=0;j}
void output ( matr a, int n, int m)
{
for(int i=0;i {
for(int j=0;j cout< }
}

Слайд 20

void form(matr a,mas b,int n, int m) { for(int i=0;i {

void form(matr a,mas b,int n, int m)
{
for(int i=0;i {
b[i]=0;
for(int j=0;j if(a[i][j] % 5==0)b[i]++;
}
}
int

max(mas b,int n)
{
int maxx=b[0];
for(int i=0;i if(b[i]>maxx)maxx=b[i];
return maxx;
}
void output_mas(mas a, int m)
{
for(int i=0;i cout<}
Слайд 21

int main() { matr a,b; mas p,q; input(a,10,10); cout " output(a,10,10);

int main()
{
matr a,b;
mas p,q;
input(a,10,10);
cout<<"Output matr A>"< output(a,10,10);
input(b,10,10);
cout<<"Output matr B>"< output(b,10,10);
form(a,p,10,10);
form(b,q,10,10);
cout<<"massiv P"< output_mas(p,10);
cout<<"massiv Q"< output_mas(q,10);
cout<<"maxim P="<

maxim Q="<}
Слайд 22

Для целочисленных матриц А и В 5 × 6 сформировать одномерные

Для целочисленных матриц А и В 5 × 6 сформировать одномерные

массивы P и Q, состоящие из элементов матрицы, кратных пяти

#include
#include
#include
using namespace std;
typedef int matr[5][6];
typedef int mas[30];
// Функция формирования матрицы
void input(matr a, int n, int m)
{
for (int i = 0; i for (int j = 0;j}

Слайд 23

// Функция вывода значений матрицы void output(matr a, int n, int

// Функция вывода значений матрицы
void output(matr a, int n, int m)
{
for

(int i = 0; i {
for (int j = 0; j cout << setw(6) << a[i][j];
cout << endl;
}
}
// Функция формирования массива
void form(matr a, mas b, int n, int m, int& k)
{
k = 0;
for (int i = 0; i {
for (int j = 0; j if (a[i][j] % 5 == 0)b[k++]=a[i][j];
}
}
Слайд 24

// Функция вывода значений массива void output_mas(mas a, int m) {

// Функция вывода значений массива
void output_mas(mas a, int m)
{
for (int i

= 0; i cout << endl;
}
void main()
{
setlocale(LC_CTYPE, "Russian");
matr a, b;
mas p, q;
input(a, 5, 6);
cout << "Матрица A>" << endl;
output(a, 5, 6);
input(b, 5, 6);
cout << "Матрица B>" << endl;
output(b, 5, 6);
int r, s;
form(a, p, 5, 6,r);
form(b, q, 5, 6,s);
cout << "Массив P" << endl;
output_mas(p, r);
cout << "Массив Q" << endl;
output_mas(q,s);
}