Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗФ_ОАиП / Курс Лекций ОАиП.doc
Скачиваний:
65
Добавлен:
21.03.2016
Размер:
5.89 Mб
Скачать

Тесты к задаче 1.2

Тест №

Значение x

Значение y

Формула для вычисления y

Тест 1

-7.2

-14.4

y=2x

Тест 2

0

0

y=sinx

Тест 3

1.5707968

»1

y=sinx

Тест 4

5

-0.9589

y=sinx

Тест 5

6

36

y=x2

Тест 6

10

20

y=2x

Тест 7

11

121

y=x2

3.2.4 Выбор из большого числа вариантов

Выбор из многих вариантов можно сделать с помощью вложенных операторов if - else. Более удобный способ – использование операторов switch и break. Общий вид оператора выбора:

switch (i)

{

case k1 : op1;

[ break;]

case k2 : op2;

[ break;]

case kn : opn; Рис.3.6 Структура команды выбора,

[ break;] соответствующая оператору switch с

[ default : opn+1;] оператором break после каждого case

}

Здесь i – любое выражение, дающее целое значение ( в том числе – символьное);

k1, k2, …, kn – константы или константные выражения - возможные значения i (например, 2*g, 'a'-'b', '1") – записываются после слова case;

op1, op2, …, opn, opn+1 – простые или составные операторы языка.

Выполнение оператора switch:

  1. Вычисляется значение выражения i.

  1. Значение i сравнивается с k1, k2, …, kn.

  1. При совпадении i со значением ki выполняется оператор opi. Затем управление передается оператору, стоящему после следующего case, если после opi нет оператора break. Если после оператора opi есть оператор break, то управление передается на оператор, следующий после оператора switch.

  2. Если i не совпало ни с одним k1, k2, …, kn, то выполняется оператор opn+1, стоящий после default, а затем оператор, следующий после оператора switch. При отсутствии default выполняется следующий после switch оператор.

Рассмотрим примеры решения задач с использованием оператора выбора.

Задача 3. Задан номер текущего дня недели. Вывести названия дней, оставшихся до конца недели, включая текущий день.

Решение. Возможные значения номера дней недели (обозначим их через n) – это числа 1-7. При вводе числа 1 программа должна выводить названия "Понедельник ", "Вторник ", …, "Воскресенье", при вводе числа 2 – названия "Вторник ", …, "Воскресенье". И т.д. При вводе числа 7 – только название "Воскресенье". При вводе любого другого числа – сообщение "Неправильно введен номер дня недели". Реализация выбора из такого множества вариантов может быть осуществлена с помощью оператора switch (k). Ниже приведен текст программы с оператором switch(k), в котором только после последнего case есть оператор break;, по которому и происходит выход из switch и переход на следующий оператор программы (fflush(stdin);) для k=1-7. Если k¹1-7, то выполнится оператор puts ("Неправильно введен номер дня недели");, стоящий после default, затем следующий оператор программы (fflush(stdin);).

/* Программа задачи 3 */

#include <stdio.h>

#include <math.h>

main()

{

int k; // Номер дня недели

puts("Введите номер дня недели");

scanf("%d",&k);

printf("До конца недели:\n");

switch (k)

{

case 1: puts("Понедельник ");

case 2: puts ("Вторник ");

case 3: puts ("Среда ");

case 4: puts ("Четверг ");

case 5: puts ("Пятница ");

case 6: puts ("Суббота ");

case 7: puts ("Воскресенье \n");

break;

default: puts ("Неправильно введен номер дня недели");

}

fflush(stdin); getchar();

return(0);

}

Следующий пример показывает, что после case ki : может не быть оператора.

Задача 4. Ввести символ и определить, является ли он цифрой.

Решение. Пусть k – вводимый символ. В программе использованы операторы ввода-вывода в стиле Си.

В задаче 5 используется оператор выбора с оператором break после каждого case ki :

Задача 5. Дано целое число в диапазоне 1 – 5. Вывести строку — словесное описание соответствующей оценки (1 — "плохо", 2 — "неудовлетворительно", 3 — "удовлетворительно", 4 — "хорошо", 5 — "отлично").

Решение. В программе N- число, которое вводится, а затем анализируется. Если ввести, например, 4, то программа выведет слово "Хорошо", а если ввести 7, то программа выведет строку "Нет оценки" и т.д. В программе использованы операторы ввода-вывода в стиле С++.

Программа задачи 4 Программа задачи 5

#include <stdio.h>

main()

{

char k;

puts("Введите символ");

k=getchar();

switch (k)

{

case '1':

case '2':

case '3':

case '4':

case '5':

case '6':

case '7':

case '8':

case '9':

case '0':printf("Это число %c\n",k);

break;

default: printf("%c-не число\n",k);

}

fflush(stdin);

getchar();

return(0);

}

#include <stdio.h>

#include <iostream.h>

main()

{

int N;

cout << "\nВведите число ";

cin >> N;

switch (N)

{

case 1: cout << "\nПлохо";

break;

case 2: cout << "\nНеуд.";

break;

case 3: cout << "\nУдовл.";

break;

case 4: cout << "\nХорошо";

break;

case 5: cout << "\nОтлично";

break;

default: cout << "\nНет оценки ";

}

fflush(stdin);

getchar();

return(0);

}