Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Double x2; // изменен тип объекта на double

Поиск

// вызывает сообщение-предупреждение Warning 3 warning C4244

cin>>a>>x1>>x2;

Double vir1; // изменен тип объекта на double

// вызывает предупреждение о грубой ошибке Error 2 error C2664

countX (x1*x1, x2, M_PI_2, vir1); // строка 22, на которую указано

float vir2;

countX(x2, x1 + 1.2, 0, vir2);

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

cout<< endl <<"X = "<<x;

getch();

}

 

При компиляции этого варианта выдается сообщение об ошибках.

Сообщение в окне List Error

Error 2 error C2664: 'countX': cannot convert parameter 4 from 'double' to 'float&'пример3\example3.cpp 22

Warning 3 warning C4244: 'argument': conversion from 'double' to 'float', possible loss of data пример3\example3.cpp 22

 

Обмен данными между функциями через глобальные объекты. Функции без возвращаемого значения. Функции без параметров.

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

А если объект виден сразу в нескольких функциях, то этот объект можно использовать для обмена информацией между этими функциями. Одна функция записывает информацию в глобальный объект, другая читает эту информацию.

 

 

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

 

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

 

 
 

 

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

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

 
 

 

#define _USE_MATH_DEFINES

#include <math.h>

#include <iostream>

#include <conio.h>

using namespace std;

Float aGl, bGl, cGl, xGl; // определены 4 глобальных объектов

void countX (void)

{ // значения в глобальных объектах aGl, bGl, cGl для вычисления в этой

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

xGl= (aGl * cos(bGl + cGl) - bGl * sin(aGl + cGl)) /

(pow(aGl,3) + bGl * bGl);

// оператор = записывает результат в глобальный xGl,

// а использоваться этот результат будет в функции 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;



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 298; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.127.13 (0.008 с.)