}
void myfuncB() {...
try
{
myfuncA();
}
catch (const char* message)
{
...
}
...
}
Некоторые программные конструкции так же могут «бросать» исключения в определѐнных ситуациях.
4.3Примеры решения задач
Задача А. Ввести с клавиатуры целые числа A и B. Вычислить их сумму, если они одного знака, или разность, если разных. Если одно из чисел 0 - вывести ноль.
Решение
Для определения одного или разных знаков A и B, а так же для определения, равно ли одно из этих чисел нулю, наиболее простым способом будет их перемножить и сравнить полученный результат с нулѐм. В зависимости от результата этого сравнения и будем выводить на экран их сумму, разность или «0». Для обозначения сравнения при создании блоксхемы алгоритма воспользуемся блоком «Решение».
45
|
Начало |
|
Целое число A |
|
Целое число B |
|
Целое число temp |
|
Ввод значений |
|
A и B |
|
temp = A * B |
да |
нет |
|
temp == 0 |
да |
нет |
|
|
|
temp > 0 |
Вывод «0» |
Вывод A + B |
Вывод A - B |
Конец
На основе разработанного алгоритма напишем программу. Ветвление в алгоритме реализуем при помощи инструкции «if-else»
#include <conio.h> #include <iostream>
void main()
{
int A; std::cout<<"vvedite A:"; std::cin>>A;
46
int B; std::cout<<"\nvvedite B:"; std::cin>>B;
std::cout<<"\nresultat: ";
int temp = A * B;
if(temp == 0)
{
std::cout<<0;
}
else
{
if(temp > 0)
{
std::cout<<A + B;
}
else
{
std::cout<<A - B;
}
}
std::cout<<"\nPress any key to continue"; _getch();
}
Протестируем написанную программу, запустив еѐ несколько раз, и вводя различные значения целых чисел A и B.
Вводимое значение A |
1 |
2 |
-3 |
7 |
-1 |
8 |
0 |
Вводимое значение B |
1 |
5 |
4 |
-2 |
-6 |
0 |
-5 |
Полученный результат |
2 |
7 |
-7 |
9 |
-7 |
0 |
0 |
Проверим правильность результатов работы программы, находя сумму или разность введѐнных значенй A и B или выбирая «0» в зависимости от знаков этих чисел. Все полученные результаты соответствуют действительности, значит, можно предположить, что программа работает верно.
47
Задача Б. Ввести с клавиатуры символ. Вывести на экран «Math», если введѐнный символ обозначает арифметическую операцию и «NoMath» в противном случае.
Составим алгоритм работы программы. В его блок-схеме должны быть три блока «Данные»: для ввода символа с клавиатуры, для вывода текста «Math» и для вывода текста «NoMath». Для определения, обозначает ли введѐнный символ арифметическую операцию, (т.е. является ли введѐнный символ «+», «-», «*» или «/») в блок-схеме должен быть блок «Решение».
Начало
Символ symbol
Ввод symbol
'+', |
'-', '*', '/' |
symbol
другой символ
Вывод «Math» |
Вывод «NoMath» |
Конец
Для реализации блока «Решение» блок-схмы алгоритма можно воспользоваться конструкцией «if-else», в условии которой будет находиться длинное логическое выражение, включающее четыре сравнения. Но в данном случае проще будет воспользоваться конструкцией «switch».
#include <conio.h> #include <iostream>
void main()
{
48
char symbol; std::cout<<"\nInput symbol:"; std::cin>>symbol;
switch(symbol)
{
case ‘+’: case ‘-’: case ‘*’: case ‘/’: std::cout<<"\nMath";
break; default:
std::cout<<"\nNoMath";
}
std::cout<< "\nPress any key to continue"; _getch();
}
Протестируем написанную программу, запустив еѐ несколько раз, и вводя различные символы.
Вводимое |
+ |
- |
* |
/ |
$ |
x |
А |
0 |
1 |
|
значение |
||||||||||
|
|
|
|
|
|
|
|
|
||
Полученный |
Math |
Math |
Math |
Math |
NoMath |
NoMath |
NoMath |
NoMath |
NoMath |
|
результат |
||||||||||
|
|
|
|
|
|
|
|
|
Все полученные результаты соответствуют ожидаемым – программа выводит «Math» только при вводе символов «+», «-», «*» и «/», значит, можно предположить, что программа работает верно.
Задача В. Ввести с клавиатуры натуральное двузначное число и цифру. Определить, сколько раз в числе встречается эта цифра.
Составим блок-схему алгоритма работы программы. Она должна содержать несколько блоков «Данные»: для ввода числа, для ввода цифры, для вывода результата, для сообщения о некорректном вводе данных.
Также в блок-схеме должны быть четыре блока «Решение»:
-для обозначения проверки, что было введено именно двузначное число (а не трѐхзначное, например);
-для обозначения проверки, что была введена цифра, а не число;
-для определения, является ли первая цифра числа такой же, как и заданная цифра;
-для определения, является ли вторая цифра числа такой же, как и заданная цифра.
49