Задача 1: Перемещение объекта. Те, кто увлечен компьютерными играми, безусловно, знают специфику использования клавишей W, A, S, D – в графическом режиме они позволяют контролировать движение объектов на экране.
Напишем программу, которая будет “виртуально перемещать” объект, который первоначально находится в точке координат x, y: при нажатии клавиши A программа выведет сообщение ”Движение влево”, при нажатии клавиши D – сообщение ”Движение вправо”; W – ”Движение Вперед” и S – ”Движение назад”.
Решение: схема решения задачи чрезвычайно проста:
1. ”считываем” нажатую клавишу
2. Используем switch для вывода сообщения, соответствующего нажатой клавише
3. (дополнительно) если была нажата клавиша отличная от описанных, выводится сообщение предварительного предупреждения
Программа:
В этой первой версии программа корректно реагирует только на нажатие клавиши в верхнем регистре (заглавной буквы).
Вторым недостатком программы является то, что для считывания значения нажатой клавиши мы каждый раз будем нажимать еще и клавишу Enter, что не очень удобно, если мы моделируем игру.
Попробуем улучшить программу!
Для того, чтобы программа реагировала правильно, независимо от активного регистра (Заглавные или строчные буквы), добавим еще один аргумент для каждого действия:
case ‚’a’ : case ’A’ : ”Движение влево” и так же для остальных направлений.
ля чтения символов будем пользоваться специальной функцией getch(). Эта функция описана в библиотеке <conio.h>. Она отличается от функции getchar() тем что не дожидается нажатия клавиши Enter для подтверждения считанного символа.
Внимание! Эта вторая версия программы будет работать правильно в средах разработки, установленных локально на компьютерах!
Задача 2: гороскоп. Вы все знаете о связи созвездий зодиака с календарными месяцами. Родившиеся в январе ассоциируются с созвездием Козерога, родившиеся в феврале – это Водолеи, в Марте – Рыбы, в Апреле – Овны затем Тельцы, Близнецы, Рак, Лев, Дева, Весы, Скорпион, Стрелец. Напишите программу, которая по индексу введенного с клавиатуры месяца будет отображать знак зодиака, который этому месяцу соответствует.
Решение: как и в предыдущей задаче, схема решения сводится к:
1. ”считываем” номер месяца (число от 1 до 12)
2. Используем switch для отображения сообщения с названием соответствующего созвездия
3. (дополнительно) если было введено число отличное от чисел с одного до двенадцати, отображаем предупреждение
В самых разных ситуациях может возникнуть задача замены числового значения буквенным эквивалентом. Такие ситуации могут возникнуть, например, в банке, у нотариуса, когда вы подписываете договор или финансовый документ.
Задача 3: Транслитерация чисел. Дано число от 30 до 90. Следует написать программу, которая выведет транслитерацию введенного числа– значение, написанное словами – на румынском языке.
Замечание: задачу можно было бы решить, проверяя каждое значение числа отдельно (для этого можно использовать if , или switch.), но это решение будет малоэффективным так как породит очень большую программу. Подсчитай, сколько операторов понадобится для описания сравнений при использовании оператора if
Почему бы нам не уменьшить количество проверок?!
В обозначениях чисел используется 10 различных цифр. Так как у нас есть двузначное число, достаточно разделить его на две отдельные цифры, затем переписать буквенное значение каждой из них, добавив фрагменты ”zeci ” и ”si ”!
Например:
Решение:
Цифра справа – единицы – не что иное как остаток от целого деления исходного числа на 10. 53 % 10 получаем 3; 47 % 10 получаем 7 и так далее! Цифра слева – десятки – это частное, полученное при делении исходного числа на 10: 53 / 10 равно 5; 47 / 10 равно 4. Пусть значения левой и правой цифры хранятся в переменных z(от ”zeci”) и u ( от ”unități”).
Теперь можно начать писать программу!