Читайте также:
|
|
Идентификация переменных представлена в табл. 1.
Таблица 1
Обозначение в алгоритме | t | V | Vопт | Рбоч | Пр1 | Пр2 | Fбо | Fиск | N |
Обозначение в программе | t | v | vopt | rb | pr1 | pr2 | fbo | f | n |
Условно-линейные схемы алгоритма и таблица идентификации позволяют составить программы решения задачи.
Программа по левой условно-линейной схеме
Особенность левой условно-линейной схемы – сохранение естественного порядка расчета при невыполнении отдельных условий и нарушение этого порядка, когда условия выполняются. Программирование такого варианта требует использования укороченного if.
/* Сложное ветвление. Укороченный if */
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
float t, v, vopt, rb, pr1, pr2, fbo, f;
int n;
scanf(“%f %f %f %f %f %f”, &t, &v, &vopt, &rb, &pr1, &pr2);
printf(“\n t=%.1f v=%.1f vopt=%.1f rb=%.1f”
“ pr1=%.1f pr2=%.1f ”, t, v, vopt, rb, pr1, pr2);
fbo=rb*t/60.; /* расход бензина при оптимальной скорости*/
if(vopt-0.01 <= v && v <= vopt+0.01) goto m1; /*переход */
/*к ветви 1*/
if(v<vopt) goto m2; /* переход к ветви 2 */
f = fbo + fbo * pr2/100.; /* ветвь 3 */
n=3;
goto m3;
m2: f = fbo + fbo * pr1/100.; /* ветвь 2 */
n=2;
goto m3;
m1: f = fbo; /* ветвь 1 */
n=1;
m3: printf(“\n fbo=%.2f f=%.2f n=%d ”, fbo, f, n);
}
5. 5. 5.
75.3 80. 91.2
80. 80. 80.
7.6 7.6 7.6
4.3 4.3 4.3
8. 8. 8.
Внимание! В программе впервые использован минимальный форматный ввод исходных данных – без указания общей длины каждого. Численные значения для обозначения окончания любого располагаются под программой, а затем вводятся столбцом (переход к следующей строке означает окончание ввода предыдущей). Три столбца численных значений вводимых переменных позволяют проверить все возможные вычислительные ветви (<, >, =).
Программа по правой условно-линейной схеме
Особенность правой условно-линейной схемы – сохранение естественного порядка расчета при выполнении отдельных условий и нарушение этого порядка, когда условия не выполняются. Программирование такого варианта требует использования полного if.
/* Сложное ветвление. Полный if */
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
float t, v, vopt, rb, pr1, pr2, fbo, f;
int n;
scanf(“%f %f %f %f %f %f”, &t, &v, &vopt, &rb, &pr1, &pr2);
printf(“\n t=%.1f v=%.1f vopt=%.1f rb=%.1f”
“ pr1=%.1f pr2=%.1f ”, t, v, vopt, rb, pr1, pr2);
fbo=rb*t/60.; /* расход бензина при оптимальной скорости*/
if(vopt - 0.01 <= v && v <= vopt + 0.01)
{
f = fbo; /* ветвь 1 */
n=1;
}
else
{
if(v<vopt)
{
f = fbo + fbo * pr1/100.; /* ветвь 2 */
n=2;
}
else
{
f = fbo + fbo * pr2/100.; /* ветвь 3 */
n=3;
}
}
printf(“\n fbo=%.2f f=%.2f n=%d ”, fbo, f, n);
}
5. 5. 5.
75.3 80. 91.2
80. 80. 80.
7.6 7.6 7.6
4.3 4.3 4.3
8. 8. 8.
Три столбца значений вводимых переменных позволяют проверить все возможные вычислительные ветви (<, >, =).
Дата добавления: 2015-07-15; просмотров: 64 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Формирование математической модели | | | Выбор метода решения |