{
chargrade:
cout<< "Введите буквенную отметку рубежного контроля: ":
cin>> grade;
switch (grade)
{
case 'A':
case 'a':
cout<< "Отлично."<<" Готовьтесь к итоговому контролю"<<endl;
break;
case 'B':
case 'b':
cout<<"Очень хорошо";
grade = 'A';
cout<< "Ваша отметка рубежного контроля теперь "<<grade<<endl;
break;
case 'C':
case 'c':
cout<< "Удовлетворительно. Вы прошли \n";
break;
case 'D':
case 'd':
case 'F':
case 'f':
cout<< "Не удовлетворительно. Вам необходимо подготовиться\n";
break;
default:
cout<<"Это невозможная отметка.\n";
}
cout<< "Конец программы.\n";
system("PAUSE");
returnEXIT_SUCCESS;
}
Оператор switch определяет несколько ветвей программы, из которых выполняется только одна. Выбор осуществляется на основе управляющего выражения, заданного в скобках после ключевого слова switch. В примере листинга 3 это выражение типа char. В общем случае управляющее выражение оператора switch должно возвращать либо значение типа bool, либо константу типа enum, либо значение одного из целочисленных типов, либо символ. При выполнении оператора switch вычисляется управляющее выражение, а затем компьютер просматривает значения констант, заданных после ключевых слов case. Встретив константу, значение которой совпадает со значением управляющего выражения, он выполняет код данной ветви case. За константой следует двоеточие и оператор switch не может содержать две ветви case с одинаковыми константами.
Оператор break состоит из ключевого слова break, за которым следует точка с запятой. Когда компьютер выполняет операторы, расположенные после ключевого слова case, он делает это последовательно до тех пор, пока не встретит оператор break. В этом случае выполнение оператора switch заканчивается. Если опустить операторы break, после выполнения кода одной ветви case компьютер будет переходить к следующей.
Одному фрагменту исполняемого кода могут соответствовать две и более ветви case. В операторе switch одно и то же действие выполняется для прописных и строчных букв. Более того в четырех случаях ‘D’ и ‘F’ также выполняется одно и то же действие
Укажем общий синтаксис оператора switch:
switch (управляющее выражение)
{
case значение_1:
последовательность_операторов_1;
break;
case значение _2:
последов ательность_операторов_2;
break;
……………………………………..
case значение _п:
последовательность_ операторов_ п;
break;
default:
последовательность_операторов_по_умолчанию;
}
Задание 13
На конкурсе по программированию участвуют 18 студентов и призовой фонд распределяется следующим образом: 1-е место 200 сомони; 2-е место 150 сомони; 3-е место 100 сомони; 4-е место 50 сомони. Остальные отмечаются как участники. Написать программу определения суммы приза. Предусмотреть возможность игнорирования неверного ввода.
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
const int n=18;
int joy, pul;
naw: cout<<"Место: ";
cin>>joy;
for(int i=1;i<=n;i++)
{
if(i==joy)
goto nishon;
}
cout<<"Участники - (1-"<<n<<")"<<endl;
goto naw;
nishon: switch (joy)
{
case 1:
pul=200;
break;
case 2:
pul=150;
break;
case 3:
pul=100;
break;
case 4:
pul=50;
break;
default:
pul=0;
}
if(pul==0)
cout<<"Выучастник"<<endl;
else
cout<<"Вызаняли "<<joy<<"-e место."<<'\t'
<<"Вашприз - "<<pul<<" сомони"<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Примечание. В данном коде используются оператор goto и меткиnaw и nishon, которые служат для передачи управления необходимому фрагменту программы.
Задание 14
На конкурсе по программированию участвуют 18 студентов и призовой фонд, который составляет n сомони, распределяется следующим образом: 1-е место 40% от призового фонда; 2-е место 30% от призового фонда; 3-е место 20% от призового фонда; 4-е место 10% от призового фонда. Остальные отмечаются как участники. Написать программу определения суммы приза. Предусмотреть возможность игнорирования неверного ввода.
int main(int argc, char *argv[])
{
const int n=18, joy, pul;
float tuhfa;
cout<<"Призовойфонд: ";
cin>>pul;
naw: cout<<"Место: ";
cin>>joy;
for(int i=1;i<=n;i++)
{
if(i==joy)
goto nishon;
}
cout<<" Участники - (1-"<<n<<")"<<endl;
goto naw;
nishon: switch (joy)
{
case 1:
tuhfa=40*pul/100;
break;
case 2:
tuhfa=30*pul/100;
break;
case 3:
tuhfa=20*pul/100;
break;
case 4:
tuhfa=10*pul/100;
break;
default:
pul=0;
}
if(pul==0)
cout<<"Выучастник"<<endl;
else
cout<<"Вы заняли "<<joy<<"-eместо."<<'\t'
<<"Ваш приз - "<<pul<<" сомони"<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Задание 15
Составить игровую программу «Угадай число». Компьютер «задумает» число от 1 до n и пользователь должен отгадать его. При этом, если отгаданное число меньше задуманного, то выдается сообщение «Больше» и сообщение «Меньше» в противном случае. При правильном угадывании выдается сообщение «Поздравляю» и количество попыток.
int main(int argc, char *argv[])
{
int secret, guess, k=0, n;
secret = rand() % n + 1;
cout<<"Отгадайте задуманное число (1 - 10) ";
do
{
cin>>guess;
k++;
if (secret<guess)
cout<<"Меньше"<<endl;
else
{
if (secret>guess)
cout<<"Больше"<<endl;
}
}
while(secret!=guess);
cout<<"Поздравляю вы угадали за "<<k;
switch (k)
{
case 1:
cout<<" раз"<<endl;
break;
case 2:
case 3:
case 4:
cout<<" раза"<<endl;
break;
default:
cout<<" разов"<<endl;
}
system("pause");
return EXIT_SUCCESS;
}
Задания для лабораторной работы №4
1. Дано целое число в диапазоне 1–7. Вывести строку — название дня недели, соответствующее данному числу (1 — «понедельник», 2 — «вторник» и т. д.).
2. Дано целое число K. Вывести строку-описание оценки, соответствующей числу K (1 — «плохо», 2 — «неудовлетворительно», 3 — «удовлетворительно», 4 — «хорошо», 5 — «отлично»). Если K не лежит в диапазоне 1–5, то вывести строку «ошибка».
3. Дан номер месяца — целое число в диапазоне 1–12 (1 — январь, 2 — февраль и т. д.). Вывести название соответствующего времени года («зима», «весна», «лето», «осень»).
4. Дан номер месяца — целое число в диапазоне 1–12 (1 — январь, 2 — февраль и т. д.). Определить количество дней в этом месяце для невисокосного года.
5. Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Дан номер действия N (целое число в диапазоне 1–4) и вещественные числа A и B (В не равно 0). Выполнить над числами указанное действие и вывести результат.
6. Единицы длины пронумерованы следующим образом: 1 — дециметр,
2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр. Дан номер единицы длины (целое число в диапазоне 1–5) и длина отрезка в этих единицах (вещественное число). Найти длину отрезка в метрах.
7. Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер единицы массы (целое число в диапазоне 1–5) и масса тела в этих единицах (вещественное число). Найти массу тела в килограммах.
8. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, предшествующей указанной.
9. Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, следующей за указанной.
10. Робот может перемещаться в четырех направлениях («С» — север,
«З» — запад, «Ю» — юг, «В» — восток) и принимать три цифровые команды: 0 — продолжать движение, 1 — поворот налево, –1 — поворот направо. Дан символ C — исходное направление робота и целое число N — посланная ему команда. Вывести направление робота после выполнения полученной команды.
11. Локатор ориентирован на одну из сторон света («С» — север, «З» — запад, «Ю» — юг, «В» — восток) и может принимать три цифровые команды поворота: 1 — поворот налево, –1 — поворот направо, 2 — поворот на 180°. Дан символ C — исходная ориентация локатора и целые числа N1 и N2 — две посланные команды. Вывести ориентацию локатора после выполнения этих команд.
12. Элементы окружности пронумерованы следующим образом: 1 — радиус R, 2 — диаметр D = 2·R, 3 — длина L = 2·π·R, 4 — площадь круга S = π·R2. Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данной окружности (в том же порядке). В качестве значения π использовать 3.14.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |


