Основной алгоритм
Алгоритм решения задачи — линейный и состоит из:
· ввода значений x и y;
· вычисления значения t1;
· вычисления значения t2;
· выведения значений t1 и t2.
Оптимизация алгоритма
Перед непосредственным программированием алгоритма проанализируем, как в нем можно изменить объем вычислений.
Выражение ax встречается один раз в первой формуле и дважды — во второй. Следовательно, можно один раз произвести умножение a*x, а потом использовать этот результат.
Во второй формуле дважды встречается умножение квадратного корня на тангенс — это вычисление можно так же сделать один раз.
Выражение c2–b2 можно разложить на (c+b)(c–b). До разложения в выражении было две операции умножения (возведение в степень 2) и одна — сложения. После разложения — два сложения и одно умножение, что выгоднее для вычислений.
Ограничения на значения параметров
Аргумент функции, которую вычисляет логарифм, не может быть 0 или меньше. Отсюда вытекают требования к значениям: a * x + b > 0; y * x + d > 0
Аргумент функции извлечения квадратного корня не может быть меньше 0, отсюда: c2–b2>=0
В знаменателе выражения не может быть 0, отсюда:
кроме того:
ОБРАЩАЕМ ВНИМАНИЕ, ЧТО В ПРОГРАММНОЙ РЕАЛИЗАЦИИ НЕ РАССМАТРИВАЮТСЯ ПРОВЕРКА НА КОРРЕКТНОСТЬ, ЕЕ НЕОБХОДИМО ВЫПОЛНИТЬ САМОСТОЯТЕЛЬНО!!!!
Определение переменных программы
Для решения задачи понадобятся переменные для представления каждого параметра формул — a, b, c, d, x,y и результатов — t1, t2. Кроме того, придется ввести дополнительную переменную ax для хранения промежуточного результата , необходимого для оптимизации. Тип всех переменных — double.
Разработка текста программы
/* Лабораторная работа 2 */
/* Арифметические выражения и функции */
/* Пример решения. Вариант ____ */
#include <stdio.h> /* Программа начинается с включения файлов */
#include <math.h>
int main(void) /* открываемглавнуюфункцию*/
{
double x,y; /* параметры, которые вводятся */
double a=12.5, b=1.3; /*параметры, которые задаются в программе */
double c=14.1, d=2.7;
double t1, t2; /* результаты */
double ax; /* рабочаяпеременная */
printf("Введите x, y >"); /*Вводятся значения для переменных x и y */
scanf("%lf %lf",&x,&y);
ax=a*x; /* вычисляется первое промежуточное значение */
t1=(b*log(ax+b)/a+d*log(y*x+d)/y)/c; /*вычисляется первый результат*/
ax=sqrt((c-b)*(c+b))*tan(ax); /* второй промежуточный результат */
t2=log((ax+b)/(ax-b))/2/a/b; /*второйокончательный результат */
printf("t1 = %lg\n",t1); /*Полученные результаты на экран */
printf("t2 = %lg\n",t2);
return 0;
}
Отладка программы
При отладке программы можно проверять правильность выполнения каждой операции. Для этого сложные операторы-выражения, разбиваются на последовательность операторов-выражений, в каждом из которых выполняется только одна операция. Результат каждой такой операции выводится на экран или отслеживается в пошаговом режиме.
ЛАБОРАТОРНАЯ РАБОТА №6
Логические операции. Условный оператор
в языке C
Цель работы : получение практических навыков в работе с условным оператором и разветвленными алгоритмами в языке C.
Темы для предварительной проработки
· Логические операции
· Условный оператор
Задание: Построить программу, которая вводит координаты точки(x, y) и определяет, попадает ли точка в заштрихованную область на рисунке, который соответствует Вашему варианту, представленному в таблице 2.8. Попадание на границу области считать попаданием в область. Предварительно вывести на экран замкнутую область в виде пересечения графиков. Предусмотреть выход из программы по желанию пользователя "Продолжить Да/Нет?").
Номер варианта устанавливается преподавателем, который проводит руководство лабораторными занятиями (см. таблицы, распределенные в группах лектором, относящиеся к общим рекомендациям соответственно).
Таблица 2.8 — Варианты индивидуальных заданий
Вариант | Задание и цветовая гамма | Вариант | Задание и цветовая гамма |
1 | ![]() | 2 | ![]() |
3 | ![]() | 4 | ![]() |
Таблица 2.8 — Продолжение
Вариант | Задание и цветовая гамма | Вариант | Задание и цветовая гамма |
5 | ![]() | 6 | ![]() |
7 | ![]() | 8 | ![]() |
9 | ![]() | 10 | ![]() |
Таблица 2.8 — Продолжение
Вариант | Задание и цветовая гамма | Вариант | Задание и цветовая гамма |
11 | ![]() | 12 | ![]() |
13 | ![]() | 14 | ![]() |
15 | ![]() | 16 | ![]() |
Таблица 2.8 — Продолжение
Вариант | Задание и цветовая гамма | Вариант | Задание и цветовая гамма |
17 | ![]() | 18 | ![]() |
19 | ![]() | 20 | ![]() |
21 | ![]() | 22 | ![]() |
Таблица 2.8 — Продолжение
Вариант | Задание и цветовая гамма | Вариант | Задание и цветовая гамма |
23 | ![]() | 24 | ![]() |
25 | ![]() | 26 | ![]() |
27 | ![]() | 28 | ![]() |
Таблица 2.8 — Продолжение
Вариант | Задание и цветовая гамма | Вариант | Задание и цветовая гамма |
29 | ![]() | 30 | ![]() |
31 | ![]() | 32 | ![]() |
33 | ![]() | 34 | ![]() |
Таблица 2.8 — Продолжение
Вариант | Задание и цветовая гамма | Вариант | Задание и цветовая гамма |
35 | ![]() | 36 | ![]() |
37 | ![]() | 38 | ![]() |
39 | ![]() | 40 | ![]() |
Таблица 2.8 — Продолжение
Вариант | Задание и цветовая гамма |
41 | ![]() |
Методические указания
Пример решения задачи
Дата: 2019-02-02, просмотров: 399.