Примеры решения задач в структурном подходе

Содержание

Слайд 2

Примеры решения задач с разбиением алгоритма на функции

Примеры решения задач с разбиением алгоритма на функции

Слайд 3

Примеры применения функций Напишите функцию f(int N, int& m1, int& m0),

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

Напишите функцию f(int N, int& m1, int& m0), которая

возвращает первую и последнюю цифры двузначного нату-рального числа N
#include
using namespace std;
void f(int N, int& m1, int& m0);
int main()
{int n1, n2, N;
cout<<"Input a two-digit number:"; cin>>N;
f(N,n1,n2);
cout<< "The first digit = "<"\n The second digit = "<system("pause");
return 0;}
Слайд 4

Код функции void f(int N, int& m1, int& m0) { m1=N/10; m0=N%10; return;}

Код функции

void f(int N, int& m1, int& m0)
{
m1=N/10;
m0=N%10;
return;}

Слайд 5

Примеры применения функций Напишите функцию f(int N, int * m1, int

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

Напишите функцию f(int N, int * m1, int *

m0), которая возвращает первую и последнюю цифры двузначного нату-рального числа N
#include
using namespace std;
void f(int N, int* m1, int* m0);
int main()
{int m1, m2, N;
cout<<"Input a two-digit number:"; cin>>N;
f(N, &m1, &m2);
cout<< "The first digit = "<"\n The second digit = "<system("pause");
return 0;}
Слайд 6

Код функции void f(int N, int * m1, int* m0) { *m1=N/10; *m0=N%10; return;}

Код функции

void f(int N, int * m1, int* m0)
{
*m1=N/10;
*m0=N%10;
return;}

Слайд 7

Анализ программы Если в качестве формальных параметров стоят переменные-ссылки, то для

Анализ программы

Если в качестве формальных параметров стоят переменные-ссылки, то для адекватной

работы программы необходимо выделить в вызывающей функции память под переменные, которые будут переданы по этим ссылкам.
Вызываемая функция работает непосредственно в той области памяти, которая выделена под переменные в вызывающей функции.
Слайд 8

Анализ программы Если в качестве формальных параметров стоят переменные-указатели, то для

Анализ программы

Если в качестве формальных параметров стоят переменные-указатели, то для адекватной

работы программы необходимо разыменовать фактические параметры и передать в указатели их адреса, т.е. взять адрес по ссылке
Вызываемая функция работает непосредственно с разыменованными переменными, поэтому знак указателя необходим при выполнении операций в теле вызываемой функции.
Слайд 9

Функция вычисления суммы ряда Составить программу для вычисления суммы ряда #include

Функция вычисления суммы ряда

Составить программу для вычисления суммы ряда #include
#include
using namespace

std;
float sum_series(float x, int N);
int main()
{float x,S;
int N;
cout<<"Input x:"; cin>>x;
cout<<"Input N:"; cin>>N;
S=sum_series(x,N);
cout<<"S = "<< S<< endl;
system("pause");
return 0;
}
Слайд 10

Функция вычисления суммы ряда Составить программу для вычисления суммы ряда float

Функция вычисления суммы ряда

Составить программу для вычисления суммы ряда

float sum_series(float x,

int N)
{float x3=x*x*x, u=1,s=0;
Int zn=1;
for (int i=1;i<=N;i++)
{u*=x3;
zn*=i;
s+=u*log(3*x+i)/zn;
}
return s;
}
Слайд 11

Функция табулирования суммы ряда для набора аргумента x Составить программу для

Функция табулирования суммы ряда для набора аргумента x

Составить программу для построения

таблицы значений функции S(x,N), вычисляющей сумму ряда
Для с шагом 0,5
#include
#include
using namespace std;
float sum_series(float x, int N);
void table(float xn, float xk, float dx);
int N;// Gloabal variable
int main()
{float xn, xk, dx;
cout<<"Input N:"; cin>>N; cout<<"Input xn xk dx:"; сin>>xn>>xk>>dx;
table(xn,xk,dx);
system("pause");
return 0;}
Слайд 12

Код функции table void table(float xn, float xk, float dx) {

Код функции table

void table(float xn, float xk, float dx)
{
float S;
printf(" x

S ");
for(float x=xn;x {
S=sum_series(x, N);
printf("\n %3.1f %.2e", x,S);
}
cout< return;
}
Слайд 13

Передача в функцию массива Даны два массива. Необходимо найти сумму элементов

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

Даны два массива. Необходимо найти сумму элементов в

каждом из них и вычислить наибольшее среднее арифметическое из средних арифметических обоих массивов.
#include
#include
using namespace std;
void prnt(int c[ ], int n);// вывод массива на консоль
int sum_arr(int c[ ], int n); // сумма элементов массива
float sr_arph(int c[ ], int n); // среднее арифметическое массива
void test(int c[ ], int n); // проверка способа передачи массива в функцию
Слайд 14

Главная программа int main() { int a[ ]={1,-2,0,7,-6}, b[ ]={3,7,-2,1,0,4,7}; int

Главная программа

int main()
{ int a[ ]={1,-2,0,7,-6}, b[ ]={3,7,-2,1,0,4,7};
int sa,sb;
int na=sizeof(a)/sizeof(int), nb=sizeof(b)/sizeof(int);
prnt

(a,na); prnt(b,nb);
sa=sum_arr(a,na); sb=sum_arr(b,nb);
cout<<"\n sa = "<return 0;}
Слайд 15

Коды функций void prnt(int c[ ], int n) { cout for(int

Коды функций

void prnt(int c[ ], int n)
{
cout< for(int i=0;i cout<<'\t'<cout<return;}
int sum_arr(int c[ ],

int n)
{
int s=0;
for(int i=0;i s+=c[i];
return s;
}

float sr_arph(int c[], int n)
{
return sum_arr(с, nc) /float(n);
}
void test(int c[], int n)
{
for(int i=0;i c[i]++;
n--;
}

Слайд 16

Результаты работы программы При использовании массива в качестве аргумента функции происходит

Результаты работы программы

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

в функцию его адреса. Это означает, что код внутри функции действует и может изменять настоящее значение массива, используемого при вызове. 

Когда массив используется в качестве аргумента функции, передается только адрес массива, а не копия всего массива. При вызове функции с именем массива в функцию передается указатель на первый элемент массива.

Слайд 17

Анализ программы Передача массива в функцию реализуется по ссылке, т.е. копия

Анализ программы

Передача массива в функцию реализуется по ссылке, т.е. копия массива

в функции не создаётся, функция работает с тем же участком памяти, где находится массив, описанный в main()
Размер массива – n – передаётся по значению: для переменных na и nb создаются копии в теле функции. Поэтому любые изменения с ними в теле функции не вызывают изменение фактического параметра, значение которого было скопировано в функцию.