Лабы 1 курс 2 семестр / ЛР 3 Информатика 2 сем 2020
.pdfНачало
Целое неотрицательное число number Целое неотрицательное число digit Целое неотрицательное число quantity = 0
Ввод значений number и digit
|
|
нет |
number >= 100 || |
да |
||
|
|
|
|
|||
|
|
|
number |
< |
10 |
|
нет |
digit |
>= 10 |
да |
|
|
|
|
|
|
|
|
||
нет |
да |
|
|
|
|
|
digit == number % 10 |
|
|
|
|
|
|
|
quantity++ |
|
|
|
|
Вывод «некорректное значение number» number -= number % 10
number /= 10 |
Вывод «некорректное |
|
|
|
значение digit» |
нет |
|
да |
digit == |
number % 10 |
|
|
|
quantity++ |
|
|
Вывод quantity |
Конец
Составим программу согласно полученой блок-схеме. Для реализации проверок на корректность введѐнных данных воспользуемся конструкцией
«try-throw-catch».
#include <conio.h> #include <iostream>
void main()
{
try
{
unsigned int number; unsigned int digit; unsigned int quantity = 0;
50
std::cout<<"Input number:"; std::cin>>number;
if(number < 10 || number >= 100)
{
throw 1; // Код ошибки, когда заданое число не двузначное
}
std::cout<<"\nInput digit:"; std::cin>>digit; std::cout<<"\n";
if(digit >= 10)
{
throw 2; // Код ошибки, когда задано число, а не
цифра
}
if(digit == number % 10) // если вторая цифра числа такая же, как и заданная цифра
{
quantity++; // считаем сопадение
}
number -= number % 10; number /= 10;
if(digit == number % 10) // если первая цифра числа такая же, как и заданная цифра
{
quantity++; // считаем сопадение
}
std::cout<<quantity; // выводим количество совпадений
}
catch(int errorcode)
{
switch(errorcode) // для обработки ошибок
{
case 1:
std::cout<<"incorrect value of number"; break;
51
case 2:
std::cout<<"incorrect value of digit"; break;
default:
std::cout<<"unknown error";
}
}
std::cout<<"\nPress any key to continue"; _getch();
}
Введѐнное число |
23 |
57 |
65 |
33 |
277 |
4 |
38 |
|
Введѐнная цифра |
2 |
8 |
5 |
3 |
|
|
27 |
|
Результат работы |
|
|
|
|
incorrect |
incorrect |
incorrect |
|
1 |
0 |
1 |
2 |
value of |
value of |
value of |
||
программы |
||||||||
|
|
|
|
number |
number |
digit |
Протестируем написанную программу. Для этого запустим еѐ несколько раз, вводя различные числа. Полученные результаты соответствуют действительности, можно предположить, что программа работает верно.
4.4Задания (выполняются по вариантам)
Задача 3.1.1. Ввести с клавиатуры числа х, у. Вывести «Yes» или «No» в зависимости от того, принадлежит ли точка с координатами (x, y) заштрихованной области.
Задача 3.1.2. Ввести с клавиатуры числа х, у. Вывести «Yes» или «No» в зависимости от того, принадлежит ли точка с координатами (x, y) заштрихованной области.
52
Задача 3.1.3. Ввести с клавиатуры числа х, у. Вывести «Yes» или «No» в зависимости от того, принадлежит ли точка с координатами (x, y) заштрихованной области.
Задача 3.1.4. Ввести с клавиатуры числа х, у. Вывести «Yes» или «No» в зависимости от того, принадлежит ли точка с координатами (x, y) заштрихованной области.
Задача 3.1.5. Ввести с клавиатуры числа х, у. Вывести «Yes» или «No» в зависимости от того, принадлежит ли точка с координатами (x, y) заштрихованной области.
Задача 3.1.6. Ввести с клавиатуры числа х, у. Вывести «Yes» или «No» в зависимости от того, принадлежит ли точка с координатами (x, y) заштрихованной области.
53
Задача 3.1.7. Ввести с клавиатуры числа х, у. Вывести «Yes» или «No» в зависимости от того, принадлежит ли точка с координатами (x, y) заштрихованной области
Задача 3.1.8. Ввести с клавиатуры числа х, у. Вывести «Yes» или «No» в зависимости от того, принадлежит ли точка с координатами (x, y) заштрихованной области.
Задача 3.1.9. Ввести с клавиатуры числа х, у. Вывести «Yes» или «No» в зависимости от того, принадлежит ли точка с координатами (x, y) заштрихованной области.
Задача 3.1.10. Ввести с клавиатуры числа x, y. Вычислить z = m + n, где
y, при x > 0; |
x, при y > 0; |
m = 0, при x == 0; |
n = 0, при y == 0; |
-y, при x < 0. |
- x, при y < 0. |
Результат вывести на экран
Задача 3.1.11. Ввести с клавиатуры числа x, y. Вычислить z = m - n, где
x, при x <= -8; |
y, при y < -2; |
m = x2, при -8 < x <= 8; |
n = y2, при -2 <= y < 2; |
x3, при x > 8. |
y3, при y >= 2. |
Результат вывести на экран |
|
54
Задача 3.1.12. Ввести с клавиатуры целые числа i, k. Вычислить k, при i == 0, иначе
i, при k == 0, иначе
z = i - k, при k, кратном i, иначе k - i, при i, кратном k, иначе i + k
Результат вывести на экран
Задача 3.1.13. Ввести с клавиатуры целые числа i, k. Вычислить k - i, при k > 50, иначе
k + i, при k < 25, иначе
z= k * i, при i > 10, иначе k / i, при i < 0, иначе
i % k (остаток от деления) Результат вывести на экран
Задача 3.1.14. Ввести с клавиатуры числа x, y. Вычислить x + y, при x > 0 , y > 0;
z = x - y, при x < 0 , y < 0; 100, при x == 0 или y == 0; x * y, в остальных случаях
Результат вывести на экран
Задача 3.1.15. Ввести с клавиатуры числа x, y. Вычислить x3 + y3, при -1 < x < 1 и -1 < y < 1, иначе
z = x2 + y2, при -1 < x < 1 и y == ±1, иначе x + y, при -1 < y < 1 и x == ±1, иначе
2, в остальных случаях Результат вывести на экран
Задача 3.1.16. Ввести с клавиатуры числа k, m, n. Вычислить k + 2m, при k < m < n,
z = k + 2n, при m < n < k, 2k + m, при n < k < m,
2k + n, в остальных случаях Результат вывести на экран
Задача 3.1.17. Ввести с клавиатуры числа x, y. Вычислить x + y/5, при |x| > 15, y < 0;
z = x/3 + y, при |y| > 6 , x < 0;
2x + 2y + 2, в остальных случаях Результат вывести на экран
55
Задача 3.1.18. Ввести с клавиатуры числа x, y, v. Если x>y, вывести на экран v. Иначе, если y>v, вывести на экран x. Иначе, если v>x, вывести на экран y. Если ни одно из вышеперечисленных условий не выполнено, вывести на экран соответствующее сообщение.
Задача 3.1.19. Ввести с клавиатуры символ. Вывести на экран «yes», если введѐнный символ обозначает строчную букву латинского алфавита или «YES», если заглавную. В остальных случаях вывести «No».
Задача 3.1.20. Ввести с клавиатуры символ. Вывести на экран «Number», если введѐнный символ обозначает цифру, «Letter» - если строчную или заглавную букву латинского алфавита и «Simbol» в остальных случаях.
Задача 3.2.1. Ввести с клавиатуры символ. Вывести «yes», если введѐнный символ обозначает строчную гласную букву латинского алфавита или «YES», если заглавную гласную. В остальных случаях вывести «No».
Задача 3.2.2. Ввести с клавиатуры символ. Вывести «Yes, Even», если введѐнный символ обозначает чѐтную цифру, «Yes, Odd», если нечѐтную цифру и «No» в остальных случаях.
Задача 3.2.3. Ввести с клавиатуры символ. Вывести «Yes», если введѐнный символ обозначает знак перепинания, и «No» в противном случае.
Задача 3.2.4. Ввести с клавиатуры символ. Вывести «yes», если введѐнный символ обозначает строчную латинскую букву «m», «n» или «k», «YES» - если заглавную букву «M», «N» или «K», и «No» в противном случае.
Задача 3.2.5. Ввести с клавиатуры символ. Вывести «Yes», если введѐнный символ обозначает строчную или заглавную букву «A», «B», «C» или «D» латинского алфавита, и «No» в противном случае.
Задача 3.2.6. Ввести с клавиатуры символ. Вывести «1», если этот символ обозначает первую или последнюю букву латинского алфавита, «2» - вторую или предпоследнюю, «3» - третью или третью с конца, «-» - в любом другом случае.
56
Задача 3.2.7. Ввести с клавиатуры целое число. Вывести символ «@», если вторая с конца цифра этого числа будет 5 или 0, «%» - если 1 или 9, «^» - если 2 или 8, «&» - в остальных случаях.
Задача 3.2.8. Ввести с клавиатуры целое число. Вывести «abc», если последняя цифра этого числа 2,4 или 6, «def» - если 1,3 или 5, «ghi» - если 8 или 9, «jkl» - в остальных случаях.
Задача 3.2.9. Ввести с клавиатуры целое число. Вывести «1», если остаток от деления на 25 этого числа будет 5, 10 или 20, «2» - если 2,12 или 22, «3» - если 13, 15 или 17, «4» - в остальных случаях.
Задача 3.2.10. Ввести с клавиатуры первую букву названия времени года, строчную или заглавную. Вывести название соответствующего времени года. Если введѐнный символ не является первой буквой названия, вывести «Unknown».
Задача 3.2.11. Ввести с клавиатуры первую букву названия осеннего месяца, строчную или заглавную. Вывести название соответствующего месяца. Если введѐнный символ не является первой буквой названия осеннего месяца, вывести «Unknown».
Задача 3.2.12. Ввести с клавиатуры порядковый номер дня в неделе, начиная с понедельника. Вывести название соответствующего дня недели. Если введѐнный символ не обозначает порядковый номер дня в неделе, вывести «Unknown».
Задача 3.2.13. Ввести с клавиатуры цифру. Вывести на экран еѐ название прописью. Если введѐнный символ не является цифрой вывести «Unknown».
Задача 3.2.14. Ввести с клавиатуры число. Если это число равно 27, вывести его на экран, если это число равно 72 - вывести на экран сумму его цифр, если это число равно 22 - возвести его в квадрат и результат вывести на экран, если это число равно 77 - вывести на экран символ с таким кодом ASCII, в остальных случаях вывести на экран «schislo».
Задача 3.2.15. Ввести с клавиатуры число. Если это число равно 1, 11 или 111 - вывести его на экран, если это число равно 10, 20 или 30 - вывести на экран число 0, если это число равно 100 или 200 - вывести на экран название числа прописью, в остальных случаях вывести на экран «schislo».
57
Задача 3.2.16. Ввести с клавиатуры целое число. Если это число делится нацело на 4 - вывести его на экран. В противном случае вывести на экран получающийся остаток прописью.
Задача 3.2.17. Ввести с клавиатуры два числа и символ, обозначающий арифметическое действие (сложение, вычитание, умножение или деление). Выполнить обозначенную операцию над введѐнными числами и вывести результат на экран. Если введѐнный символ не обозначает арифметичекое действие, вывести
«Unknown operation».
Задача 3.2.18. Ввести с клавиатуры два числа и цифру, обозначающую действие: 1 - сложить эти числа, 2 - вычесть из первого числа второе, 3 - вычесть из второго числа первое. Выполнить обозначенное действие над введѐнными числами и вывести результат на экран. Если введѐнный символ не обозначает вешеуказанное действие, вывести «Unknown operation».
Задача 3.2.19. Ввести число и символ, обозначающий действие: x - умножить число на 10, y - возвести число в квадрат, z - разделить введѐнное число на 50. Выполнить обозначенное действие над введѐнным числом и вывести результат на экран. Если введѐнный символ не обозначает вешеуказанное действие, вывести «Unknown operation».
Задача 3.2.20. Ввести с клавиатуры целое число. Если это число делится нацело на 3 - вывести на экран цифру «3». Если при делении на 3 в остатке получается 1 - вывести на экран цифру «3» и букву «f». Если при делении на 3 в остатке получается 2 - вывести на экран цифру «3», букву «f» и слово «privet».
Задача 3.3.1. Поле шахматной доски определяется парой натуральных чисел, первое из которых задаст номер вертикали, а второе - номер горизонтали. Определить, на сколько всего разных полей может переместиться конь, стоящий на поле (k, l) на пустой доске. Натуральные числа k и l вводятся с клавиатуры. Если пользователь введѐт некорректные данные – вывести соответствующее сообщение.
Задача 3.3.2. Поле шахматной доски определяется парой натуральных чисел, первое из которых задаст номер вертикали, а второе - номер горизонтали. Определить, на сколько всего разных полей может переместиться слон, стоящий на поле (k, l) на пустой
58
доске. Натуральные числа k и l вводятся с клавиатуры. Если пользователь введѐт некорректные данные – вывести соответствующее сообщение.
Задача 3.3.3. Поле шахматной доски определяется парой натуральных чисел, первое из которых задаст номер вертикали, а второе - номер горизонтали. Определить, за сколько (минимум) ходов король, стоящий на поле (k, l), сможет переместиться на поле (m, n). Натуральные числа k, l, n, m вводятся с клавиатуры. Если пользователь введѐт некорректные данные – вывести соответствующее сообщение.
Задача 3.3.4. Поле шахматной доски определяется парой натуральных чисел, первое из которых задаст номер вертикали, а второе - номер горизонтали. Определить, может ли конь, стоящий на поле (k, l), переместиться на поле (m, n) за один ход. Натуральные числа k, l, n, m вводятся с клавиатуры. Если пользователь введѐт некорректные данные – вывести соответствующее сообщение.
Задача 3.3.5. Поле шахматной доски определяется парой натуральных чисел, первое из которых задает номер вертикали, а второе - номер горизонтали. Определить, может ли ферзь, стоящий на поле (k, l), переместиться на поле (m, n) за один ход. Натуральные числа k, l, n, m вводятся с клавиатуры. Если пользователь введѐт некорректные данные – вывести соответствующее сообщение.
Задача 3.3.6. Поле шахматной доски определяется парой натуральных чисел, первое из которых задаст номер вертикали, а второе - номер горизонтали. Определить, являются ли поля (k, l) и (n, m) полями одного цвета. Натуральные числа k, l, n, m вводятся с клавиатуры. Если пользователь введѐт некорректные данные – вывести соответствующее сообщение.
Задача 3.3.7. Ввести с клавиатуры 3 цифры. Определить, сколько различных трѐхзначных чисел можно получить, используя по разу каждую из введѐнных цифр. Если пользователь введѐт некорректные данные (например, число, а не цифру) – вывести соответствующее сообщение.
Задача 3.3.8. Ввести с клавиатуры натуральное трѐхзначное число. Вывести на экран все возможные двузначные числа, которые можно получить, комбинируя цифры введѐнного числа. Если
59