Вывести ориентацию локатора после выполнения заданных команд (Case) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите решить очень нужно, наперёд спасибо.(через case) Локатор ориентирован на одну из сторон света («С» — север, «З» — запад, «Ю» — юг, «В» — восток) и может принимать три цифровые команды поворота: 1 — поворот налево, -1 — поворот направо, 2 — поворот на 180°. Дан символ C — исходная ориентация локатора и целые числа N1 и N2 — две посланные команды. Вывести ориентацию локатора после выполнения этих команд. Исходные данные Исходная ориентация: C = 'В' Команды: N1 = 1 N2 = 1 Пример верного решения Новая ориентация: 'З'

Решение задачи: «Вывести ориентацию локатора после выполнения заданных команд (Case)»

textual
Листинг программы
#include <stdio.h>
 
char direction(int value);
int rumb(int value, int dir);
 
int main()
{
    char dir = 'E';
    int value = 0, n1 = 1, n2 = 1;
    value = rumb(value, n1);
    value = rumb(value, n2);
    dir = direction(value);
    printf("%c\n", dir);
    
    return 0;
}
 
int rumb(int value, int dir)
{
    switch (dir)
    {
        case -1: 
            value += 90;
            break;
        case 1:
            value -= 90;
            break;
        case 2:
            value += 180;
    }
    if (value > 360) value %= 360;
    else if (value < 0) value += 360;
    
    return value;
}
 
char direction(int value)
{
    switch(value)
    {
        case 270: return 'N'; // С
        case 180: return 'W'; // В
        case  90: return 'S'; // Ю
        case   0: return 'E'; // З
    }
}

Объяснение кода листинга программы

  1. Объединение, содержащее функции main(), rumb() и direction(), представлено в виде исходного кода на языке C.
  2. В функции main() определены переменные: dir (строка, представляющая направление локатора), value (целое число, представляющее значение угла), n1 (целое число, представляющее значение угла), n2 (целое число, представляющее значение угла).
  3. Значение переменной value обновляется вызовом функции rumb(), передавая в качестве аргументов текущее значение value и переменную n1.
  4. Значение переменной value обновляется вызовом функции rumb(), передавая в качестве аргументов текущее значение value и переменную n2.
  5. Переменная dir обновляется вызовом функции direction(), передавая в качестве аргумента текущее значение value.
  6. С помощью функции printf() выводится значение переменной dir.
  7. Функция main() возвращает 0, завершая работу программы.
  8. В функции rumb() определён оператор switch, который выбирает действие в зависимости от значения переменной dir.
  9. При значении dir равном -1 значение переменной value увеличивается на 90.
  10. При значении dir равном 1 значение переменной value уменьшается на 90.
  11. При значении dir равном 2 значение переменной value увеличивается на 180.
  12. Значение переменной value проверяется на выхождение за пределы от 0 до 360.
  13. Если значение переменной value больше 360, оно заменяется на остаток от деления на 360.
  14. Если значение переменной value меньше 0, оно заменяется на разность между 360 и остатком от деления на 360.
  15. Функция rumb() возвращает значение переменной value.
  16. В функции direction() определён оператор switch, который выбирает направление в зависимости от значения переменной value.
  17. При значении value равном 270 возвращается направление 'N'.
  18. При значении value равным 180 возвращается направление 'W'.
  19. При значении value равным 90 возвращается направление 'S'.
  20. При значении value равным 0 возвращается направление 'E'.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5
Похожие ответы