- •1. Краткие теоретические сведения
- •1.1. Знакомство с функциями
- •1.2. Описание функции
- •1.3.1. Тело функции
- •1.3.2. Формальные параметры функции
- •1.3.3. Обращение к функции
- •1.3.4. Фактические параметры.
- •1.4. Формальные и фактические параметры функции
- •1.5. Описание и объявление функции. Прототип функции
- •1 Способ - Перед main().
- •2 Способ - После main ().
- •1.6. Передача параметров в функцию. Изменяемые значения параметров
- •1.6.1. Передача параметров
- •1.6.2. Передача параметров по значению
- •1.6.3. Передача параметров по ссылке
- •1.6.4. Передача параметров по указателю
- •1.7. Механизм обращения к функции и передача данных
- •1.8. Локальные и глобальные переменные. Время жизни и область действия (видимости) переменных
- •1.8.1. Представление об области видимости переменных
- •1.8.2. Объявление локальных переменных
- •1.8.3. О конфликте имен
- •1.8.4. Глобальные переменные
- •1.8.5. Если имена глобальных и локальных переменных конфликтуют
- •1.9. Принцип сокрытия данных внутри функции. Принцип локализации имен
- •1.10. Передача одномерных массивов как параметров функции
- •1.11. Передача многомерных массивов в функцию
- •1.12. Рекурсивные функции
- •1.13. Аргументы по умолчанию
- •1.14. Встраиваемые функции (inline)
- •1.15. Перегрузка функций
- •1.16. Указатель на функцию
- •1.17. Шаблоны функций
- •1.18. Использования библиотеки этапа выполнения
- •1.18.1. Использование функций библиотеки этапа выполнения
- •1.18.2. Изучение функций библиотеки этапа выполнения
- •1.18.3. Использование функций api
- •1.19. Изменение значений параметров функции
- •1.19.1. Почему функции обычно не могут изменить значения параметров
- •1.19.2. Изменение значения параметра
- •1.19.3. Использование ассемблерных листингов для лучшего понимания работы компилятора
- •1.20. Примеры решения задач с использованием механизма функций
- •2. Задание
- •2.4. Задания для выполнения на занятиях
- •2.4.1. Задание 1. Функции пользователя-использование формул
- •2.4.1.1. Условие задания
- •2.4.1.2. Пример для варианта 30
- •2.4.1.3. Программа
- •2.4.1.4. Тестирование
- •2.4.2. Задание 2. Функции пользователя при работе с массивами
- •2.4.2.1. Условие задания
- •2.4.2.2. Пример для варианта 30
- •2.4.2.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Функции пользователя при работе с массивами
- •2.4.3.1. Условие задания
- •2.4.3.2. Пример для варианта 30
- •2.4.3.3. Программа
- •2.4.3.4. Тестирование
- •2.4.4. Задание 4. Вычисление выражений с использованием функций
- •2.4.4.1. Условие задания
- •2.4.4.2. Пример для варианта 30
- •2.4.4.3. Программа
- •2.4.4.4. Тестирование
- •2.4.5. Задание 5. Вычисление интеграла методом трапеций
- •2.4.5.1. Условие задания
- •2.4.5.2. Пример для варианта 30
- •2.4.5.3. Программа
- •2.4.5.4. Тестирование
- •2.4.5.5. Типичные ошибки при выполнении работы
- •Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Знакомство с функциями 2
2.4.1.2. Пример для варианта 30
Рассчитать среднюю работу по перемещению заряда в однородном поле для трёх зарядов, если для каждого из них известны величина заряда q, напряжённость E, расстояние между двумя точками d. Работа вычисляется по формуле A = q ⋅ E ⋅ d .
2.4.1.3. Программа
Вариант А. Вычисления без использования функций
//Лабораторная работа № 13
//Задание 1
// Вычисления без использования функций
//Вариант 30
//Автор Петрова Мария гр. ИНФО-101
// 12.05.2012
//= = = = = = = = = = = = == = = = == = = = ==
#include <conio.h> // подключение библиотеки функций ввода-вывода
#include <iostream.h> // подключение библиотеки потокового ввода-вывода
#include <iomanip.h> // подключение библиотеки средств манипулирования потоками
int main ()
{
// Объявление переменных
int n,i;
float Asr, s;
float A[10], q[10], E[10], d[10];
cout << "Введите число элементов в массивах (n <= 10): ";
cin >> n;
// Ввод массивов
for (i=0; i<n; i++)
{
cout <<"Введите " << i << "-ые элементы массивов: " << endl;
cout <<"Величина заряда q: "; cin >> q[i];
cout <<"Напряженность E: "; cin >> E[i];
cout <<"Расстояние d: "; cin >> d[i];
}
s = 0;
for (i=0; i<n; i++)
{
s = s + q[i]*E[i]*d[i];
}
Asr = s/n;
cout <<"Средняя работа для " << n << " зарядов Asr = " << Asr << endl;
cout << "Нажмите любую клавишу..." ;
getch();
return 0;
}
Вариант Б. Вычисления с использованием функций
//Лабораторная работа № 13
//Задание 1
// Вычисления с использованием функций
//Вариант 30
//Автор Петрова Мария гр. ИНФО-101
// 12.05.2012
//= = = = = = = = = = = = == = = = == = = = ==
#include <conio.h> // подключение библиотеки функций ввода-вывода
#include <iostream.h> // подключение библиотеки потокового ввода-вывода
#include <iomanip.h> // подключение библиотеки средств манипулирования потоками
float A(float q,float E,float d);//Оператор прототипа
int main ()
{
// Объявление переменных
int n,i;
float Asr, s;
float q[10], E[10], d[10];
cout << "Введите число элементов в массивах (n <= 10): ";
cin >> n;
// Ввод массивов
for (i=0; i<n; i++)
{
cout <<"Введите " << i << "-ые элементы массивов: " << endl;
cout <<"Величина заряда q: "; cin >> q[i];
cout <<"Напряженность E: "; cin >> E[i];
cout <<"Расстояние d: "; cin >> d[i];
}
s = 0;
for (i=0; i<n; i++)
{
s = s + A(q[i],E[i],d[i]);
}
Asr = s/n;
cout <<"Средняя работа для " << n << " зарядов Asr = " << Asr << endl;
cout << "Нажмите любую клавишу..." ;
getch();
return 0;
}
float A(float q,float E,float d)//Описание функции
{
return q*E*d;
}
2.4.1.4. Тестирование
Вариант А. Вычисления без использования функций
Вариант Б. Вычисления с использованием функций
Сравнивая варианты А и Б можете убедиться, что результаты совпадают.
2.4.2. Задание 2. Функции пользователя при работе с массивами
2.4.2.1. Условие задания
Написать программу решения задачи с использованием механизма функций пользователя.
Таблица 13.2
№ |
Задание |
1 |
Вычислить c = (S1 + S2+ S3)/ (k1 + k2+ k3), где S1 и k1 – сумма и количество положительных элементов массива X(10); S2 и k2 – то же для массива Y(12); S3 и k3 – то же для массива Z(8). |
2 |
Вычисль b = (S1 + S2+ S3)/ (k1*k2*k3), где S1 и k1 – сумма и количество отрицательных элементов массива A(12); S2 и k2 – то же для массива B(10); S3 и k3 – то же для массива C(8). |
3 |
Вычислить и запомнить суммы положительных элементов каждой строки матриц A(6,6), B(5,5) и C(7,7). |
4 |
Найти наименьшие элементы в массивах А(10), B(8), C(11) и их порядковые номера. |
5 |
Вывести на экран элементы целочисленных матриц N(6,8) и M(4,7) и L(5,6) кратные трём. |
6 |
Преобразовать массивы X(10), Y(12) и Z(8), расположив в них подряд только положительные элементы. Вместо остальных элементов записать нули. Вывести преобразованные массивы на экран. |
7 |
Вычислить суммы и количества элементов матриц X(8,6), Y(4,8) и Z(5,4), значения которых находятся в интервале от a до m. |
8 |
Найти наибольшие элементы в массивах X(10), Y(6), Z(11) и их порядковые номера. |
9 |
Вычислить R= (Smax1 + Smax2+ Smax3) - (Smin1 + Smin2+ Smin3), где Smax1 и Smin1 – максимальный и минимальный элементы массива X(10); Smax2 и Smin2 – то же для массива Y(12); Smax3 и Smin3 – то же для массива Z(8). Вычисления выполнить в одной подпрограмме. |
10 |
Найти наименьшие элементы для матриц A(8,6), X(7,9) и Н(5,4), а также номера строк и столбцов, в которых они расположены. |
11 |
Вычислить и запомнить количество отрицательных элементов каждого столбца для матриц A(6,8), X(9,9) и Y(5,4). |
12 |
Для каждой из матриц A(6,6), B(8,8) и C(5,5) вычислить отдельно сумму и количество положительных элементов, расположенных на главной диагонали и выше её. |
13 |
Найти наименьшие элементы и их порядковые номера для массивов X(N), Y(M), Z(K). |
14 |
Найти целочисленные элементы и номера строк и столбцов, в которых они расположены, для матриц A(5,8), B(6,4) и C(3,4). |
15 |
Вычислить среднее значение и суммы диагональных элементов каждой из матриц A(N,N), B(M,M) и C(K,K). |
16 |
Вычислить и запомнить количества и суммы отрицательных элементов каждой строки матриц C(6,6), D(8,8)< E(7,7). |
17 |
Для каждой из целочисленных матриц A(6,8), B(5,7) и C(3,4) вывести на печать количество элементов, кратных шести, и сами эти элементы. |
18 |
Вычислить и запомнить суммы положительных элементов каждого столбца матриц A(10,5), B(6,8) и C(5,4). |
19 |
Для каждой из матриц A(5,5), B(8,8) и C(6,6) вычислить отдельно сумму и количество отрицательных элементов, расположенных на главной диагонали и выше её. |
20 |
Для каждой из матриц A(6,6), B(8,8) и C(5,5) найти сумму элементов главной диагонали и сумму элементов побочной диагонали. |
21 |
Вычислить R= (Smax1 + Smax2+ Smax3)/(Smin1 + Smin2+ Smin3), где Smax1 и Smin1 – максимальный и минимальный элементы массива A(10); Smax2 и Smin2 – то же для массива B(12); Smax3 и Smin3 – то же для массива C(8). Вычисления выполнить в одной подпрограмме. |
22 |
Для каждой из матриц X(8,8), Y(10,10) и Z(9,9) вычислить отдельно сумму элементов, расположенных на главной диагонали и выше её. |
23 |
Для каждой из матриц A(N,N), B(M,M) и C(K,K) найти целочисленные элементы верхней треугольной матрицы. |
24 |
Вычислить Z1=(Xmax + Ymin)/2 и Z2=(Xmin + Ymax)/2, где Xmax и Ymax – максимальные элементы массивов X(10), Y(20); Xmin и Ymin – минимальные элементы этих же массивов (вычисление максимального и минимально элементов массива вычислять в одной подпрограмме). |
25 |
Вычислить и запомнить количества и суммы отрицательных элементов каждого столбца матриц X(10,8), Y(6,8), Z(4,8). |
26 |
Вычислить и запомнить сумму и число положительных элементов каждого столбца матриц A(5,4), B(3,4) и C(4,5). |
27 |
Вычислить и запомнить сумму и число положительных элементов каждой строки матриц A(5,4), B(3,4) и C(4,5). |
28 |
Вычислить и запомнить сумму и число отрицательных элементов каждой строки матриц X(10,8), Y(6,8), Z(4,8). |
29 |
Вычислить SSR = (S1 + S2 + S3)/3, где S1 – сумма положительных элементов массива X(10); S2 – сумма положительных элементов массива Y(20); S3 – сумма положительных элементов массива Z(15). |
30 |
Написать программу решения следующей задачи: Определить число положительных элементов до первого отрицательного в массивах X(6), Y(10), Z(8). |