А использоваться этот результат будет в функции main

}

void main ( void )

{

Cout << endl << "vvedite a, x1, x2\t";

float x1, a;

double x2;

cin >> a >> x1 >>x2;

aGl = x1*x1; // подготовлены значения для первого вызова

bGl = x2; // функции countX ()- записана ирформация

cGl = M_PI_2; // в глобальные объекты aGl, bGl, cGl

countX ();

float vir1 = xGl; // результат вычислен при первом вызове countX () в

Глобальном объекте xGl и, чтобы не потерять его

При втором вызове функции countX (), его значение

// сохраняется оператором = в локальном объекте vir1

// готовятся новые значения для второго вызова функции countX ()

aGl = x2;

bGl = x1 + 1.2;

cGl = 0;

countX();

// в глобальном xGl записан новый результат работы функции countX (),

Полученный при ее втором вызове

float x=1./11. + a * vir1 + 1 / xGl;

cout << endl << "\tX = " << x;

getch();

}

При работе этой программы область видимости глобальных объектов aGl, bGl, cGl, xGlраспространяется на обе функции программы:mainиcountX ().Это позволяет организовать взаимный обмен данными.

 

Подготовка и первый вызов функции countX ()

 

 

Подготовка и второй вызов функции countX ()

 

Смешанный обмен данными между функциями

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

Рассмотрим примеры подобного применения.

Вариант 1.

Составить функцию countX, которая, получив а, с через параметры по значению, b через глобальный объект, вычисляет х и возвращает результат его вычисления через возвращаемое значение.

 

 
 

В функции main ввести значения a, , . Используя функцию countX, вычислить значение X и выдать на экран.

 

 
 

 

В функции main не использовать стандартные математические функции.

Файл variant1.cpp

Define _USE_MATH_DEFINES

#include <math.h>

#include <iostream>

#include <conio.h>

using namespace std;

Float bGl; // определен глобальный объектов

float countX (float а, float c)

Значения в глобального объекта bGl для вычисления в этой

Инструкции готовит функция main при каждом новом вызове функции

float х = (a * cos(bGl + c) - bGl * sin(a + c)) / (pow(a,3) + bGl * bGl);

Результат из локального x возвращает оператор return

return x;

}

void main ( void )

{

Cout << endl << "vvedite a, x1, x2\t";

float x1, a;

double x2;

cin >> a >> x1 >>x2;

Подготовлено значение bGl для первого вызова функции countX

bGl = x2; // записана ирформация в глобальный объект bGl

float vir1;

vir1 = countX (x1*x1 , M_PI_2);

// готовится новое значение для второго вызова функции countX ()

bGl = x1 + 1.2;

// второй вызов функции countX осуществляется в выражении 1/countX(x2, 0)

Делится на результат, который вернула функции в точку вызова

float x = 1/11. + a * vir1 + 1 / countX(x2, 0);

cout << endl << "\tX = " << x;

getch();

}

Вариант 2.

Составить функцию countX, которая, получив с через параметр по значению, а, b через глобальные объекты, вычисляет х и возвращает результат его вычисления через параметр по ссылке.

 
 

В функции main ввести значения a, , . Используя функцию countX, вычислить значение X и выдать на экран.

 

 
 

 

В функции main не использовать стандартные математические функции.

Файл variant2.cpp

Define _USE_MATH_DEFINES

#include <math.h>

#include <iostream>

#include <conio.h>

using namespace std;