Функция – часть программы, имеющая определенное имя, предназначенная для выполнения каких-либо часто повторяемых в программе действий.
Функция может возвращать только одно значение простого типа: char, int, float, double и др., а также указатель на любой тип данных или функцию.
В функцию может быть передано несколько значений простого типа или (и) указателей.
Если необходимо, чтобы функция работала со структурированными данными (массивы, строки, структуры и др.), или возвращала более одного значения, то в функцию передают адреса этих данных.
В контрольной работе определение функции пользователя [1, с.22] должно находиться после функции main(), поэтому необходимо произвести объявление функции пользователя до функции main().
Имя функции пользователя указано в задании. Также можно воспользоваться именами переменных, указанных в задании.
Для определения четности числа можно использовать операцию %, находящую остаток от целочисленного деления. Если результат операции x % 2 равен 0, то х – четное, иначе – нечетное.
Пример: Написать функцию с именем Primer (X, Y) вещественного типа, находящую среднее значение двух вещественных чисел Х и Y. С ее помощью найти среднее значение трех пар чисел.
//Подключение стандартных библиотек
#include <stdio.h>
#include <conio.h>
…
float Primer (float x, float y); /* Объявление функции Primer: в функцию передается 2 значения вещественного типа (х и у), возвращается вещественное число*/
…
int main (int argc, char * argv[])
{
float a,b,c; //Объявления переменных вещественного типа
int ex;
/*Цикл для многократного ввода данных и вычисления результата*/
do{ //Начало цикла
printf ("\n Введите 2 числа (через пробел):");
//Вывод подсказки на экран
scanf ("%f %f",&a,&b); //Считывание данных с клавиатуры
c = Primer (a,b); //Вызов функции Primer
printf ("\n Среднее значение равно %f",c);
//Вывод результата
printf ("\n Повторить расчет?(да/нет = 1/0):");
//Запрос на повторение расчета
scanf ("%d",&ex); //Считывание данных с клавиатуры
}while (ex!=0); //Конец цикла (повторять пока ех не равно 0)
return 0;
}
//Определение функции Primer
float Primer (float x, float y)
{
float sredn; //Объявлен локальная переменная
sredn = (x + y)/2; //Расчет среднего начения
return sredn;
/*Возвращение результата в точку вызова функции*/
}
№ вар. | Задание |
1. | Написать функцию с именем Min2(A,B) вещественного типа, находящую минимальное из двух вещественных чисел A и B. С помощью этой функции найти минимальные из пар чисел A и B, A и C, A и D, если даны числа A, B, C, D. |
2. | Написать функцию Max2(A,B) вещественного типа, находящую максимальное из двух вещественных чисел A и B. С помощью этой функции найти максимальные из пар чисел A и B, A и C, A и D, если даны числа A, B, C, D. |
3. | Написать функцию Fact (N) целого типа, вычисляющую значение факториала N! = 1·2·...·N (N > 0 — целое число). С помощью этой функции вычислить факториалы двух данных чисел. |
4. | Написать функцию Fact2(N) целого типа, вычисляющую значение "двойного факториала": N!! = 1·3·5·...·N, если N — нечетное, N!! = 2·4·6·...·N, если N — четное (N > 0 — целое число). С помощью этой функции вычислить двойные факториалы двух данных чисел. |
5. | Написать функцию Otr (Ax, Ay, Bx, By) вещественного типа, находящую длину отрезка AB на плоскости по координатам его концов по зависимости: |AB| = sqrt((Ax-Bx)2 + (Ay-By)2). (Ax, Ay, Bx, By — вещественные параметры). С помощью этой функции найти длины отрезков AB, AC, ВС, если даны координаты точек A, B, C. |
6. | Написать функцию Gip (K1, K2) вещественного типа определяющую длину гипотенузы прямоугольного треугольника по его катетам К1 и К2. С помощью этой функции найти гипотенузы 2-х треугольников. |
7. | Написать функцию S_3 (A, B, C) вещественного типа, определяющую площадь треугольника при известной длине его сторон A, B, C. С помощью этой функции найти площади двух треугольников. |
8. | Написать функцию S_tr (L1, L2, L3), рассчитывающую площадь симметричной трапеции по известной длине обоих оснований L1 и L2 и высоте L3. С помощью этой функции найти площади двух трапеций. |
9. | Написать функцию S_okr (R), определяющую площадь окружности по заданному радиусу R. С помощью этой функции найти площади двух окружностей. |
10. | Написать функцию Ves_Kg (Rasm, Ed_Izm), переводящую значение веса Rasm в граммах, центнерах и тоннах в килограммы. Единицы измерения Ed_Izm кодируются следующим образом: 1- граммы, 2 – центнеры, 3 – тонны. С помощью этой функции перевести несколько значений веса в килограммы. |
Приложения
Приложение 1
Условные обозначения элементов блок-схем.
Название | Символ (рисунок) | Выполняемая функция (пояснение) |
1. Блок вычислений | ![]() | Выполняет вычислительное действие или группу действий |
2. Логический блок | ![]() | Выбор направления выполнения алгоритма в зависимости от условия (ветвление) |
3. Блоки ввода/вывода | ![]() | Ввод или вывод данных вне зависимости от физического носителя |
![]() | Вывод данных на печатающее устройство | |
4. Начало/конец (вход/выход) | ![]() | Начало или конец программы, вход или выход в подпрограмму |
5. Предопределенный процесс | ![]() | Вычисления по стандартной или пользовательской функции |
6. Блок модификации | ![]() | Выполнение цикла со счетчиком. |
7. Соединитель | ![]() | Указание связи между прерванными линиями в пределах одной страницы |
8. Межстраничный соединитель | ![]() | Указание связи между частями схемы, расположенной на разных страницах |
Приложение 2
Образец оформления титульного листа
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Брянский государственный технический университет
Кафедра «Металлорежущие станки и инструменты»
КОНТРОЛЬНАЯ РАБОТА
По дисциплине
«Программирование и основы алгоритмизации»
Студент гр. З 03 ИС
________ Иванов И.И.
Преподаватель
________ Петров П.П.
Брянск 2008