Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
интегрирование Глава 4.doc
Скачиваний:
6
Добавлен:
12.11.2018
Размер:
1.08 Mб
Скачать

Программирование задачи

Идентификация переменных представлена в табл. 4.8.

Таблица 4.8

Обозначение в алгоритме

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.

Внимание! В программе впервые использован минимальный форматный ввод исходных данных – без указания общей длины каждого. Численные значения для обозначения окончания любого располагаются под программой, а затем вводятся столбцом (переход к следующей строке означает окончание ввода предыдущей). Три столбца численных значений вводимых переменных позволяют проверить все возможные вычислительные ветви (<, >, =).

Результаты счета представлены в приложении 4.5 (а, б, в).

Программа по правой условно-линейной схеме

Особенность правой условно-линейной схемы – сохранение естественного порядка расчета при выполнении отдельных условий и нарушение этого порядка, когда условия не выполняются. Программирование такого варианта требует использования полного 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.

Три столбца значений вводимых переменных позволяют проверить все возможные вычислительные ветви (<, >, =).

Результаты счета представлены в приложении 4.6 (а, б, в).

Анализ полученных программ позволяет сделать вывод о предпочтительности варианта с полным if (отсутствуют метки операторов). Следовательно, при составлении условно-линейной схемы алгоритма сложного ветвления рекомендуется вариант «ДА, ДА, …, ДА» естественного порядка решения.