Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке с++ ч.1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.13 Mб
Скачать

Лабораторная работа №12 Решение задач с использованием оператора-переключателя switch

Цель работы: научиться решить задачи, используя оператор-переключатель switch в языке C++.

Теоретические сведения

Применение переключателей (оператор switch) наиболее целесообразно в том случае, когда ветвления нужно выполнить на основе сравнения значения некоторого выражения (например, переменной) с фиксированным набором значений. Часто это удобно при программировании меню.

Отметим, что в теле оператора-переключателя switch можно использовать вложенные операторы switch, при этом в ключевых словах case можно использовать одинаковые метки.

Например:

switch (w)

{

case 1: b=c; break; /* если переменная w=1, то b=c */

case 2:

switch (d) {

case 0: f=s; break; /* если w=2 и d=0 */

case 1: f=9; break; /* если w=2 и d=1 */

case 2: f-=9; break; /* если w=2 и d=2 */

}

break;

case 3: b-=c; break; /* если переменная w=3, то b=b-c */

}

Чтобы использовать переключатель для ветвления по условию с проверкой попадания некоторой величины в тот или иной интервал, можно воспользоваться условным выражением, формирующим целочисленный номер соответствующего интервала.

Пример 1. Составьте программу для печати приветствия на английском языке.

1 вариант

Часы суток

Номер интервала

Приветствие

22 – 3

интервал 1

Good Night!

4 – 10

интервал2

Good Morning!

11 – 14

интервал 3

Good Day!

15 – 16

интервал 4

Good Afternoon!

17 – 21

интервал 5

Good Evening!

#include <stdio.h>

void main () {

int time;

printf("Введите время (от 0 до 24): ");

scanf("%d",&time);

switch(time < 0 ? 0:

time < 4 ? 1:

time < 11 ? 2:

time < 15 ? 3:

time < 17 ? 4:

time < 22 ? 5:

time < 24 ? 1 : 0){

case 1: printf("Good Night!"); break;

case 2: printf("Good Morning!"); break;

case 3: printf("Good Day!"); break;

case 4: printf("Good Afternoon!"); break;

case 5: printf("Good Evening!"); break;

default: printf("Error!");

}

}

В соответствии со смыслом задачи и целочисленностью переменной time (используются только часы, минуты не учитываются) каждому интервалу соответствует конечное и не слишком большое количество значений. Их можно явно использовать в виде констант, входящих в case. Таким образом, решить данную задачу можно, используя несколько меток ветви переключателя.

Пример 2: Составьте программу для печати приветствия на английском языке. 2 вариант.

#include <stdio.h>

void main () {

int time;

printf("Введите время (от 0 до 24): ");

scanf("%d",&time);

switch(time){

case 22: case 23: case 24: case 0: case 1: case 2: case 3:

printf("Good Night!"); break;

case 4: case 5: case 6: case 7: case 8: case 9: case 10:

printf("Good Morning!"); break;

case 11: case 12: case 13: case 14:

printf("Good Day!"); break;

case 15: case 16:

printf("Good Afternoon!"); break;

case 17: case 18: case 19: case 20: case 21:

printf("Good Evening!"); break;

default: printf("Error!");

}

}

Задания

  1. Составьте программу для решения задачи. Вычислить y по формуле

  1. Составьте программу для решения задачи. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, следующей за указанной.

  2. Составьте программу для решения задачи. Испытуемый при тестировании может получить некоторое количество очков от 0 до 100. По результатам тестирования выставляется оценка в баллах:

от 0 до 19 – 2 балла;

от 20 до 39 – 3 балла;

от 40 до 79 – 4 балла;

от 80 до 100 – 5 баллов.

Вывести количество введенных очков тестирования и соответствующий ей балл.

Домашние задания

  1. Наберите код программ из Примеров 1 и 2. Сохраните коды программ. Выполните компиляцию и запуск программ. Введите свои данные в качестве входных.

  2. Составьте программу для решения задачи. Вычислить y по формуле

  1. Составьте программу для решения задачи. Составить программу, которая в зависимости от порядкового номера месяца (1 – январь, 2 – февраль, и т.д.) выводит на экран время года, к которому относится этот месяц.

  2. Индивидуальное задание. Номер варианта определяется по журналу. Составьте программу для решения задачи.

Варианты индивидуального задания.

Задание

Написать программу, которая по номеру дня недели n (целому числу от 1 до 7) выдает в качестве результата количество пар в вашей группе в этот день и сколько времени вы провели в университете.

Написать программу, позволяющую по последней цифре числа k определить последнюю цифру его квадрата.

В старояпонском календаре был принят 12-летний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. Написать программу, которая вводит номер некоторого года и печатает его название по старояпонскому календарю. (Справка: 1996 г. – год Крысы – начало очередного цикла.)

Для целого числа k с от 1 до 99 напечатать фразу «Мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить на слово «год» или «года». Например, 11 лет, 22 года, 51 год.

Составить программу, которая по заданным номеру месяца m определяет количество дней в этом месяце. Для февраля вывести на экран сообщение "28 или 29 дней".

Для каждой введенной цифры (0 – 9) вывести соответствующее ей название на английском языке (0 – zero, 1 – one, 2 – two,...).

Составить программу, которая для введенного натурального числа от 1 до 10000 выводит числительное, соответствующее этому числу, на русском языке. Например, 7 семь; 204 двести четыре; 52 пятьдесят два.

Составить программу, которая по данному числу m (1 – 12) выводит название соответствующего ему месяца и определяет количество дней заданного месяца в текущем году.

Составить программу, позволяющую получить словесное описание школьных отметок (1 – «плохо», 2 – «неудовлетворительно», 3 – «удовлетворительно», 4 – «хорошо», 5 – «отлично»).

Составить программу, которая по веденному номеру месяца m выдает название месяца, следующего за данным.

Написать программу, которая бы по введенному номеру времени года (1 – зима, 2 – весна, 3 – лето, 4 – осень) выдавала соответствующие этому времени года месяцы и сумму дней сезона.

Написать программу, которая бы по введенному номеру единицы измерения (1 – дециметр, 2 – километр, 3 – метр, 4 – миллиметр, 5 – сантиметр) и длине отрезка L выдавала бы соот­ветствующее значение длины отрезка в метрах.

Вычислить номер дня в невисокосном году по заданным числу d и месяцу m. Считать, что дата введена корректно.

Написать программу, которая по вводимому числу от 1 до 11 (номеру класса) выдает соответствующее сообщение «Привет, k-классник». Например, если k = 1, «Привет, первоклассник»; если k = 4, «Привет, четвероклассник».

В некотором учебном заведении действуют следующие правила приема. Абитуриенты сдают три экзамена. Если они набирают не менее 13 баллов, то это дает право поступить на дневное отделение, от 10 до 12 – на вечернее, от 8 до 9 – на заочное; ниже 8 баллов означает отказ в приеме на учебу. Написать программу, которая в зависимости от суммы набранных баллов сообщает абитуриенту его права на поступление.

Написать программу, которая бы по введенному номеру единицы измерения (1 – килограмм, 2 – миллиграмм, 3 – грамм, 4 –тонна, 5 – центнер) и массе М выдавала бы соответствующее значение массы в килограммах.

Введите время h (только часы). Напечатайте соответствующее этому времени сообщение: «Доброе утро», «Добрый день», «Добрый вечер», «Доброй ночи».

Введите количество посадочных мест m в транспорте. Напечатайте соответствующий этому количеству вид транспорта: «велосипед», «мотоцикл», «легковой автомобиль», «микроавтобус», «автобус».

Составить программу, позволяющую по последней цифре данного числа определить последнюю цифру куба этого числа.

Написать программу, которая по введенному числу от 1 до 12 (номеру месяца) выдает все приходящиеся на этот месяц праздничные дни (например, если введено число 1, то должно получиться 1 января – Новый год, 7 января – Рождество).

Пусть элементами прямоугольного равнобедренного треугольника являются: катет а; гипотенуза b; высота h, опущенная из вершины прямого угла на гипотенузу; площадь S. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.

Написать программу, которая бы по введённому номеру единицы измерения (1-децеметр, 2-километр, 3-метр, 4-миллиметр, 5-сантиметр) и длине отрезка L выдавала бы соответствующее значение длины отрезка в метрах.

Дано натуральное число n от 1 до 365, соответствующее номеру дня в году. Составить программу, определяющую месяц, на который приходится этот день.

Пусть элементами равностороннего треугольника являются: сторона а; площадь S; высота h; радиус вписанной окружности r; радиус описанной окружности R. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.

Составить программу, которая для любого натурального числа n, не превосходящего миллион, печатает количество цифр в записи этого числа.

Дано натуральное число N. Если оно делится на 4, вывести на экран ответ N = 4k (где k – соответствующее частное);

если остаток от деления на 4 равен 1 – N=4k+ 1;

если остаток от деления на 4 равен 2 – N= 4k + 2;

если остаток от деления на 4 равен 3 – N= 4к + 3.

Дано целое число k. Распечатайте приставку, соответствующую образованию производных единиц измерения от основных. Например, при k = 3 – кило; при = -6 – микро; при = 0 – не определено.

Каждой клетке шахматной доски соответствует пара координат: строки нумеруются числами от 1 до 8, столбцы – латинскими символами от ‘a’ до ’h’.На доске расставлены шахматные фигуры перед началом игры. По введенным координатам определите, чем занята клетка: белая пешка, белая фигура, черная пешка, черная фигура, клетка свободна.