Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачник_Главы 5-6.doc
Скачиваний:
2
Добавлен:
15.08.2019
Размер:
665.09 Кб
Скачать

Глава 6. Функции.

Наилучшим способом создания и поддержки больших программ является их конструирование из маленьких фрагментов – подпрограмм.

В языке С роль подпрограммы выполняет понятие функция.

Функция - это самостоятельная именованная часть программы, созданная для решения конкретной задачи.

Каждая функция имеет имя и список параметров. Параметры функции – это величины, которые передаются функции во время ее вызова. Функции могут иметь некоторое количество параметров, а могут и не иметь их вообще.

Формальные параметры – это переменные, объявленные при описании функций как ее аргументы.

Фактические параметры - это некоторые значения, используемые во время вызова функции, они заменяют формальные параметры.

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

Если функция возвращает какое-то значение с помощью оператора return, то тип возвращаемого значения должен соответствовать типу функции.

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

Примеры составления программ на языке с.

Пример 6.1

Заданы стороны треугольников: MNK и PLF. Переменной z присвоить значение -1, если площадь треугольника MNK меньше или равна площади треугольника PLF и значение 1 в противном случае. Написать функцию определения существования треугольника с заданными сторонами и вычисления площади треугольника по формуле Герона. Примечание: площадь треугольника ABC (со сторонами a, b, c) вычисляется по формуле Герона , где р - полупериметр треугольника., где r- полупериметр треугольника MNK.

/***************************************************/

/* Функции */

/* Заданы стороны треугольников: MNK и PLF. */

/* Переменной z присвоить значение -1, если */

/* площадь треугольника MNK меньше или равна */

/* площади треугольника PLF и значение 1 в */

/* противном случае. Написать функцию для */

/* вычисления площади треугольника по формуле Герона*/

/****************************************************/

#include <stdio.h>

#include <conio.h>

#include <math.h>

float ploshad(float a,float b,float c);

// Функция вычисления площади треугольника

float ploshad(float a,float b,float c)

{

float perim,p,s;

if ((a<=b+c && b<=a+c && c<=a+b))

{

printf("\n Треугольник существует. ");

perim=a+b+c; // периметр

p=perim/2; // полупериметр

s=sqrt(p*(p-a)*(p-b)*(p-c)); // площадь

}

else

{

printf("\n Треугольник не существует.");

return s=0;

}

return s;

}

// основная программа

void main()

{

clrscr();

float m,n,k,p,l,f; // стороны треугольников

float s_mnk,s_plf; // площади треугольников

int z;

// Вычисление площади треугольника MNK

printf("\n Введите стороны треугольника MNK:");

scanf("%f %f %f", &m,&n,&k);

s_mnk=ploshad(m,n,k);

if (s_mnk!=0)

printf("\n Площадь треугольника MNK=%f",s_mnk);

// Вычисление площади треугольника PLF

printf("\n \n Введите стороны треугольника PLF:");

scanf("%f %f %f", &p,&l,&f);

s_plf=ploshad(p,l,f);

if (s_plf!=0)

printf("\n Площадь треугольника PLF=%f",s_plf);

// Нахождение значения z

if (s_mnk!=0 && s_plf!=0)

{

if (s_mnk<=s_plf)

z=-1;

else

z=1;

printf("\n\n Значение z=%d",z);

}

getch();

}

Результат работы программы