Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
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 с.) |