Вообщем, есть задача, хелп плиз (не шарю) Корабль может перемещаться в четырёх направлениях (север, восток, юг, запад) и принимать четыре команды (вперёд, вправо, назад, влево). Корабль шёл сначала по некоторому курсу, а затем его курс был изменён согласно заданной команде. Определить новый курс корабля
так создай два инта: направление и команда. 1-север, 2-восток и тд. Потом то же самое для команды, и пропиши 4 if (if(way==1)&&(move==1) { cout<<"корабль плывет на север"<<endl; } ну что то типа того, и все
n19ht1n9ale, но чувак ниже, это и есть я. Увы, но я не могу согласиться с тем, что я сделал так же, как предлагаешь ты.
Fender_inactive2697143, хз, ибо до свича у нас "по сути" схожее, но да в самом свиче умно и не как у меня(я вообще не писал даже)
lztkick, решил на Си. Будут вопросы, задавай. Кстати, получается, что при команде вперёд направление корабля меняться не будет. Ведь он продолжает двигаться в текущем направлении, вот такую небольшую фишку заметил. #include <stdio.h> #include <string.h> #include <stdint.h> #include <stdbool.h> int main() { // Вводим курс: char direction[8]; scanf("%s", &direction[0]); // Вводим команду: char command[8]; scanf("%s", &command[0]); char* directions[4] = { "север", "восток", "юг", "запад" }; char* commands[4] = { "вперед", "направо", "назад", "налево" }; // Объявяем значения, которые переменные "команда" и "направление" ... // ... не достигнут при текущих обстоятельствах. // Комманд и направлений по 4 штуки (в массиве индексация с 0). // Описанные меры необходимы для проверки производимой ниже. uint8_t currentDirection = 5; uint8_t currentCommand = 5; for (uint8_t i = 0; i < 4; i++) { if ( strcmp(direction, directions[i]) == 0 ) { currentDirection = i; break; } } for (uint8_t i = 0; i < 4; i++) { if ( strcmp(command, commands[i]) == 0 ) { currentCommand = i; break; } } // Ошибки при вводе (проверка провалена): bool isInvalidValue = false; if (currentDirection == 5) { printf("Направление указано неверено!\n"); isInvalidValue = true; } if (currentCommand == 5) { printf("Команда указана неверено!\n"); isInvalidValue = true; } if (isInvalidValue) { return 0; } char* finalDirection; switch(currentCommand) { case 0: // вперёд finalDirection = direction; // прикольная команда ;-) корабль продолжает двигаться в том же направлении break; case 1: { // вправо int8_t h = currentDirection + 1; finalDirection = directions[(h == 4) ? 0 : h]; break; } case 2: { // назад int8_t h = currentDirection - 2; finalDirection = directions[(h < 0) ? currentDirection + 2 : h]; break; } case 3: { // влево int8_t h = currentDirection - 1; finalDirection = directions[(h < 0) ? 3 : h]; break; } } printf("%s\n", finalDirection); return 0; } C #include <stdio.h> #include <string.h> #include <stdint.h> #include <stdbool.h> int main() { // Вводим курс: char direction[8]; scanf("%s", &direction[0]); // Вводим команду: char command[8]; scanf("%s", &command[0]); char* directions[4] = { "север", "восток", "юг", "запад" }; char* commands[4] = { "вперед", "направо", "назад", "налево" }; // Объявяем значения, которые переменные "команда" и "направление" ... // ... не достигнут при текущих обстоятельствах. // Комманд и направлений по 4 штуки (в массиве индексация с 0). // Описанные меры необходимы для проверки производимой ниже. uint8_t currentDirection = 5; uint8_t currentCommand = 5; for (uint8_t i = 0; i < 4; i++) { if ( strcmp(direction, directions[i]) == 0 ) { currentDirection = i; break; } } for (uint8_t i = 0; i < 4; i++) { if ( strcmp(command, commands[i]) == 0 ) { currentCommand = i; break; } } // Ошибки при вводе (проверка провалена): bool isInvalidValue = false; if (currentDirection == 5) { printf("Направление указано неверено!\n"); isInvalidValue = true; } if (currentCommand == 5) { printf("Команда указана неверено!\n"); isInvalidValue = true; } if (isInvalidValue) { return 0; } char* finalDirection; switch(currentCommand) { case 0: // вперёд finalDirection = direction; // прикольная команда ;-) корабль продолжает двигаться в том же направлении break; case 1: { // вправо int8_t h = currentDirection + 1; finalDirection = directions[(h == 4) ? 0 : h]; break; } case 2: { // назад int8_t h = currentDirection - 2; finalDirection = directions[(h < 0) ? currentDirection + 2 : h]; break; } case 3: { // влево int8_t h = currentDirection - 1; finalDirection = directions[(h < 0) ? 3 : h]; break; } } printf("%s\n", finalDirection); return 0; }