Программирование на СИ Робот может перемещаться в четырех направлениях( n- север, w - запад, s - юг, e - восток) и принимать пят
Программирование на СИ Робот может перемещаться в четырех направлениях( n- север, w - запад, s - юг, e - восток) и принимать пять цифровых команд : 0 - остановка, 1 - продолжать движение, -1 - движение реверсом, 2 - поворот направо, -2-поворот налево. Дан символ C - исходное направление робота и целое число N - посланная ему команда. Вывести направление робота после выполнения каждой полученной команды, вплоть до остановки.
int main() { int N; char c; printf("Исходное направление робота (n,w,s,e): "); scanf("%c",&c); printf("Команда (0,1,-1,2,-2): "); scanf("%d",&N); while (N != 0){ switch (N) { case 1 : break; case -1: switch (c) { case 'n' : c = 's'; break; case 'w' : c = 'e'; break; case 's' : c = 'n'; break; case 'e' : c = 'w'; break; }; break; case 2 : switch (c) { case 'n' : c = 'e'; break; case 'w' : c = 'n'; break; case 's' : c = 'w'; break; case 'e' : c = 's'; break; }; break; case -2: switch (c) { case 'n' : c = 'w'; break; case 'w' : c = 's'; break; case 's' : c = 'e'; break; case 'e' : c = 'n'; break; }; break; } printf("c = %c\n", c); printf("Команда (0,1,-1,2,-2): "); scanf("%d",&N); } return 0; }
Пример: <span>Исходное направление робота (n,w,s,e): n Команда (0,1,-1,2,-2): 2 c = e
Команда (0,1,-1,2,-2): 1 c = e
Команда (0,1,-1,2,-2): -2 c = n
Команда (0,1,-1,2,-2): -1 c = s
Команда (0,1,-1,2,-2): 0</span>
Для создания потока вывода в класс System определен объект out. В этом объекте определен метод println, который позволяет вывести на консоль некоторое значение с последующим переводом консоли на следующую строку. Например:
Const T = 'АБВГДЕЁЖЗИЙКЛИНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжхийклмнопрстуфхцчшщъыьэюя'; n = 66;// Количество символов в Т
var s,buf: string; P: array[1..n] of integer; i, k: integer; F: Text;
begin Assign(F, 'CharCount.txt'); Reset(F); s:=''; while not SeekEof(F) do begin Read(F,buf); s:=s+buf end; Writeln(s); for i := 1 to n do P[i] := 0; for i := 1 to length(s) do begin k := Pos(s[i], T); if k > 0 then P[k] := P[k] + 1 end; for i := 1 to n do if P[i] > 0 then writeln(T[i], ' - ', P[i]:3) end.
Тестовый пример: Ксаверий Феофалактович Грушин, следственный пристав Сыскного управления при московском обер-полицмейстере,облегченно вздохнул и отложил влево, в стопку "просмотрено", сводку важных преступлений за вчерашний день Г - 1 К - 1 С - 1 Ф - 1 а - 8 б - 2 в - 13 г - 2 д - 4 е - 17 ж - 2 х - 2 и - 11 й - 5 к - 6 л - 10 м - 4 н - 13 о - 20 п - 8 р - 11 с - 12 т - 8 у - 6 ф - 1 ц - 1 ч - 3 ш - 2 ы - 3 ь - 1 я - 1