Алгоритм, состоящий из нескольких этапов вычислений


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

где a, b, c - длины сторон треугольника,
p - полупериметр, вычисляется по формуле:

p=(a + b + c)/2.

Это тоже будет линейный алгоритм, но он будет длиннее предыдущих, так как в нем должны присутствовать промежуточные вычисления: нам требуется вычислить площадь через полупериметр, который в свою очередь вычисляется через длины сторон треугольника.
Посмотрим, сколько ячеек памяти понадобятся для работы алгоритма: три ячейки для хранения длин сторон, одна для полупериметра и одна для значения площади. Названия ячеек возьмем из поставленной задачи:

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

1. Ввести значения сторон треугольника a,b,c;
2. Вычислить значение полупериметра p;
3. Вычислить значение площади S
4. Вывести значение площади на экран.

Программа, составленная по этому алгоритму:

#include<stdio.h>
#include<math.h>
int main()
{
float a,b,c; // a,b,c - стороны треугольника, вещественные переменные
float p,S; // p - полупериметр, S - площадь
printf("Введите стороны\n");
scanf("%f%f%f",&a,&b,&c); /*ввод значений сторон - трех вещественных чисел */
p=(a+b+c)/2; //вычисление полупериметра
S=sqrt(p*(p-a)*(p-b)*(p-c)); //вычисление площади
printf("Площадь = %f\n", S); //вывод результата - вещественного значения
}

Мы видим, что второй строкой программы подключается еще одна библиотека - math.h. Эта библиотека содержит так называемые математические функции. Из этой библиотеки в нашей программе используется одна такая функция, sqrt() - корень квадратный. Аргумент функции всегда записывается в скобках.
В языке Си имеется обширный набор математических функций.

С другими математическими функциями познакомиться Начало формы Конец формы

 

Начало формы Конец формы

Еще одно требование касается компиляции программы, содержащей математические функции. Для создания загрузочного файла (второй этап компиляции) в конце команды требуется добавить еще один флаг (-lm), означающий подключение данной библиотеки. Пусть исходный код имеет имя файла geron.c, тогда команда выглядит:

gcc -o geron geron.o -lm

Не забывайте, что математическую библиотеку надо подключать и с помощью директивы в программе, и с помощью флага команды компиляции! Это единственная библиотека Си, которой требуется такое двойное подключение.

Программа вычисления по формуле Герона - это уже довольно ощутимый размер кода, и в ней ученики уже могут сделать (и делают!) массу ошибок.

Как расправиться с ошибками Начало формы Конец формы

 

Начало формы Конец формы

 

Резюме

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

Вопросы для самопроверки

1. Что такое линейный алгоритм
2. Какие основные типы данных имеются в языке Си
3. Что такое константа
4. Как подключить к программе библиотеку математических функций

Задания для самостоятельной работы

1. Во всех следующих заданиях требуется разработать алгоритм и составить программу на языке Си. Задания приведены по возрастанию их сложности.

1. Дана сторона квадрата. Найти его периметр.
2. Дан радиус окружности. Найти ее диаметр.
3. Дана длина ребра куба. Найти объем куба и площадь его боковой поверхности.
4. Дан радиус окружности. Найти ее длину и площадь круга, ограниченного этой окружностью.
5. Даны катеты прямоугольного треугольника. Найти его периметр.
6. Даны основания и высота равнобедренной трапеции. Найти ее периметр.
7. Найти площадь кольца по заданным внешнему и внутреннему радиусу.
8. Составить программу решения линейного уравнения ax+b=0 (a не равно 0).
9. Даны два числа. Найти их среденн арифметическое и среднее геометрическое.
10. Даны стороны прямоугольника. Найти его периметр и длину диагонали.
11. Даны длины сторон прямоугольного параллелепипеда. Найти его объем и площадь боковой поверхности.
12. Известен объем куба. Найти площадь его боковой поверхности.
13. Известна площадь круга. Найти длину окружности, ограничивающей этот круг.
14. Даны действительные положительные числа a, b, c. По трем сторонам с длинами a, b, c можно построить треугольник. Найти углы треугольника (в радианах и градусах). (Указание - воспользуйтесь теоремой косинусов). Начало формы

Конец формы

 









Последнее изменение этой страницы: 2016-04-07; Нарушение авторского права страницы

infopedia.su не принадлежат авторские права, размещенных материалов. Все права принадлежать их авторам. Обратная связь