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

Правила составления и использования

  1. Метки ni задаются пользователем произвольно (желательно по нарастанию) и не могут повторяться.

  2. В одном операторе switch может быть не более 257 вариантов выбора.

  3. Отсутствие операторов break позволяет получить чистую структуру оператора switch. В этом варианте после выбора нужной ветви будут последовательно выполнены все ниже расположенные варианты, включая default, если он имеется.

  4. Элемент по умолчанию может быть не последним в теле оператора switch. При этом, если оператор break в его ветви отсутствует, то будут последовательно выполнены все ниже расположенные варианты.

  5. Использование чистого оператора switch при отсутствии некоторых операторов ветвей позволяет выполнять передачу управления на одну ветвь по нескольким разным меткам, записанным выше.

  6. Метками оператора goto помечать ключевые слова case и default запрещается – они сами выполняют функцию меток.

Так, фрагмент программы

int a, b;

. . .

switch ( a – b )

{

case 0:

case 1:

case 2:

x=96.;

default:

y=3;

case 5:

z=12;

}

d=6.;

предписывает в случае, если (а - b) равно нулю, единице или двойке вычисление х, а затем y, z, d. Если (a - b) равно 5 – вычисляется z и d. Если (а - b) не равно 0, 1, 2, 5 – вычисляется y, z и d.

Представленный фрагмент позволяет судить о возможностях оператора switch, но не соответствует стандартной структуре «выбор» и используется как специфический.

С учетом изложенного, запрограммируем решение задачи.

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

Таблица 4.9

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

Баз

k

Балл

Ст

N

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

baz

kbaz

ball

St

n

С учётом таблицы идентификации на основании схем алгоритма запишем программы решения задачи.

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

Особенность левой условно-линейной схемы – сохранение естественного порядка расчета при выполнении отдельных условий и нарушение этого порядка, когда условия не выполняются. Программирование такого варианта требует использования полной структуры «множественный выбор».

/* Множественное ветвление. switch */

#include<stdio.h>

#include<stdlib.h>

main( )

{

float baz, kbaz, st;

int ball, n;

scanf("%f %f %d", &baz, &kbaz, &ball);

switch(ball)

{

case 0:

st = 0;

n = 0;

break;

case 2:

st = 0;

n = 2;

break;

case 3:

st = 0;

n = 3;

break;

case 4:

st = baz;

n = 4;

break;

case 5:

st = baz + kbaz*baz;

n = 5;

break;

default:

printf("Error");

}

printf("\n baz=%.2f kbaz=%.2f ball=%d ",baz, kbaz, ball);

printf("\n st=%.2f n=%d", st, n);

}

3

Пять строк численных значений вводимых переменных позволяют проверить все возможные вычислительные ветви (= 0, = 2, = 3, = 4, = 5).

00. 0.25 0

300. 0.25 2

300. 0.25 3

300. 0.25 4

300. 0.25 5

Результаты решения представлены в приложении 4.7 (а, б, в,  г, д).

Внимание! Сообщение «Error» в строке выводимых данных свидетельствует о вводе в качестве балла любого непредусмотренного задачей значения.