ТЕМА: Создание
программ с использованием функций
ЦЕЛЬ РАБОТЫ: получить
практические навыки по написанию
пользовательских функций и их применению в главной программе на С++
1. Составить
программу для нахождения значения функции:

Для вычисления оформите в
виде функции выражение:

2. Пусть имеется три
массива. Сформировать массивы и вывести их на экран. Определить в каком массиве
наибольшая сумма элементов, найти сумму максимальных элементов массива и
произведение минимальных элементов. Написать функции для работы с массивом:
- формирование массива на отрезке;
- вывод массива на экран;
- нахождение суммы элементов массива
- нахождение минимального элемента
- нахождение максимального элемента
Используя функции решить
задачу. Пусть имеется три массива. Сформировать массивы и вывести их на экран.
Определить в каком массиве наибольшая сумма элементов, найти сумму максимальных
элементов массива и произведение минимальных элементов.
1. Для решения первой
задачи программа может иметь вид:
//подключаем заголовочные файлы
#include <iostream.h>
#include <math.h>
//описываем прототип функции f1
//с двумя аргументами (n,m)
float
f1(float n, float m);
//начало главной программы
int main()
{
system("chcp 1251>nul");
//описываем вспомогательные переменные
float x,y;
//очищаем экран
clrscr();
//вводим значение исходных данных для расчета (х)
cout<<"Введите
значение переменной x: ";
cin>>x;
//вычисляем значение выражения с использованием
//функции пользователя f1
y=f1(pow(x,3),2*x)+f1(4*pow(x,2),-sin(x));
//задаем точность вывода результата
cout.precision(2);
//выводим на экран полученный результат
cout<<"Функция равна: "<<y;
//делаем паузу для просмотра
system("pause");
return 0;
}
//реализация функции пользователя
float f1(float n,
float m)
{
//выходим из функции и передаем
//в главную программу найденное
значение
return (n+m)/2;
}
2. Для решения второй
задачи программа может иметь вид:
//подключаем заголовочные файлы
#include <iostream.h>
#include <stdlib.h>
//прототип функции ввода массива
void
vvodmas (float m[], int n);
//прототип функции вывода массива
void vivodmas (float m[],
int n);
//прототип функции нахождения
//суммы элементов в массиве
float
summas (float m[], int n);
//прототип функции нахождения
//максимального в массиве
float
maxmas (float m[], int n);
//прототип функции нахождения
//минимального в массиве
float
minmas (float m[], int n);
//главная программа
int main()
{
system("chcp
1251>nul");
//описываем три массива
float mas1[20],mas2[20], mas3[20];
//описываем переменные для хранения
//сумм по трем массивам
float s1,s2,s3;
//описываем переменные для хранения
//количества элементов по трем массивам
int kol1,kol2,kol3;
//формируем первый массив
//вводим количество элементов в массиве
cout<<"Введите
количество элементов 1 массива: ";
cin>>kol1;
//вызываем функцию ввода массива
vvodmas(mas1,kol1);
//выводим полученный массив на экран
cout<<"1
массив имеет вид:\n";
vivodmas(mas1,kol1);
//формируем второй массив
//вводим количество элементов в массиве
cout<<"Введите
количество элементов 2 массива: ";
cin>>kol2;
//вызываем функцию ввода массива
vvodmas(mas2,kol2);
cout<<"2
массив имеет вид:\n";
//выводим полученный массив на экран
vivodmas(mas2,kol2);
//формируем третий массив
//вводим количество элементов в массиве
cout<<"Введите
количество элементов 3 массива: ";
cin>>kol3;
//вызываем функцию ввода массива
vvodmas(mas3,kol3);
cout<<"3
массив имеет вид:\n";
//выводим полученный массив на экран
vivodmas(mas3,kol3);
//в переменные s1,s2,s3 записываем суммы элементов массива
s1=summas(mas1,kol1);
cout<<"\nСумма элементов 1 массива:
"<<s1<<"\n";
s2=summas(mas2,kol2);
cout<<"Сумма элементов 2 массива:
"<<s2<<"\n";
s3=summas(mas3,kol3);
cout<<"Сумма элементов 3 массива:
"<<s3<<"\n";
//определяем, в каком массиве найденная сумма максимальная
if (s1>=s2
&& s1>=s3)
cout<<"\nМаксимальная сумма в 1 массиве\n";
else if (s2>=s1
&& s2>=s3)
cout<<"Максимальная сумма во 2
массиве\n";
else
cout<<"Максимальная сумма в 3
массиве\n";
//выводим на экран максимальное значение в каждом массиве
cout<<"\nМаксимальный
элемент в 1 массиве: "<<maxmas(mas1,kol1)<<"\n";
cout<<"Максимальный
элемент в 2 массиве: "<<maxmas(mas2,kol2)<<"\n";
cout<<"Максимальный
элемент в 3 массиве: "<<maxmas(mas3,kol3)<<"\n";
//выводим сумму максимальных значений по трем массивам
cout<<"Сумма="<<maxmas(mas1,kol1)+maxmas(mas2,kol2)+maxmas(mas3,kol3)<<"\n";
//выводим на экран минимальные значения в каждом массиве
cout<<"\nМинимальный
элемент в 1 массиве: "<<minmas(mas1,kol1)<<"\n";
cout<<"Минимальный
элемент в 2 массиве: "<<minmas(mas2,kol2)<<"\n";
cout<<"Минимальный
элемент в 3 массиве: "<<minmas(mas3,kol3)<<"\n";
//выводим произведение минимальных значений по трем массивам
cout<<"Произведение="<<minmas(mas1,kol1)*minmas(mas2,kol2)*minmas(mas3,kol3);
//делаем паузу для просмотра
system("pause");
return 0;
}
//реализация функции ввода
массива
void vvodmas (float m[],
int n)
{
system("chcp 1251>nul");
//описываем переменные для ввода концов отрезка
float a,b;
int i;
//вводим концы отрезка
cout<<"Для
формирования массива укажите концы отрезка: ";
cin>>a>>b;
//в цикле заполняем массив случайными числами
for (i=0; i<=n-1;
i++)
m[i]=(b-a)*rand()/32767+a;
//выходим из функции в главную программу
return;
}
//реализация функции вывода
массива
void vivodmas (float m[],
int n)
{
int i;
//задаем точность вывода
cout.precision(3);
//в цикле выводим массив в одну строку через пробел
for (i=0; i<=n-1;
i++)
cout<<m[i]<<"
";
//по окончании вывода переводим курсор на новую строку
cout<<"\n";
//выходим из функции в главную программу
return;
}
//реализация функции нахождения
суммы элементов
float
summas(float m[], int n)
{
//вначале сумма обнуляется
float sum=0;
int i;
//в цикле считаем сумму элементов
for (i=0;
i<=n-1;i++)
sum+=m[i];
//выходим из функции и передаем
//в главную программу найденную сумму
return sum;
}
//реализация нахождения
максимального значения
float
maxmas(float m[], int n)
{
//сначала максимальный элемент первый
float max=m[0];
int i;
//в цикле ищем максимальный элемент массива
for (i=0;
i<=n-1;i++)
if (max<m[i])
max=m[i];
//выходим из функции и передаем
//в главную программу найденный максимум
return max;
}
//реализация нахождения
минимального значения
float
minmas(float m[], int n)
{
//сначала минимальный элемент первый
float min=m[0];
int i;
//в цикле ищем минимальный элемент массива
for (i=0;
i<=n-1;i++)
if (min>m[i])
min=m[i];
//выходим из функции и передаем
//в главную программу найденный минимум
return min;
}
Дополнительно:
1. Найти площади трех
прямоугольных треугольников. Определить, какая из площадей наибольшая. (Использовать
функцию нахождения площади и максимального из трех чисел)
2. Составить программу для нахождения значения функции:
.
Для вычисления оформите в виде функции выражение: 
3. Заменить в строке все
цифры на *.
4. Заданы координаты
точки (x, y). Определить в какой четверти находится эта точка
5. Описать функцию,
возвращающую N-ю цифру целого числа K. Если
количество цифр в числе K меньше N, то функция возвращает −1.
6. Вычислить двойной
факториал N!!.
Для справок:
N!! = 1·3·5·…·N, если N — нечетное;
N!! = 2·4·6·…·N, если N — четное.
7. Дан одномерный массив.
Определить, каких элементов больше четных или нечетных. Какой процент от общего
количества элементов составляют положительные числа.
8. Дан двумерный массив.
Вывести элементы k-й строки. Определить сумму положительных элементов в
массиве.