Форум программистов, компьютерный форум CyberForum.ru

Робот К-79 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ выдает ошибки,какие не могу понять http://www.cyberforum.ru/cpp-beginners/thread1050289.html
/*В целочисленном массиве найти количество четных чисел, рас-положенных между первым и последним нулевыми числами этого мас-сива. Предусмотреть случаи, когда нет нулей, нуль единственный, нет четных чисел между первым и последним нулевыми числами, и вывести соответствующий текст. */ #include "stdafx.h" #include <iostream> using namespace std; void main() { setlocale(0,"");...
C++ двухмерный массив(можно с использованием функцией) В матрице найти количество строк, у которых есть хотя бы один нуль и номер первой такой строки. http://www.cyberforum.ru/cpp-beginners/thread1050277.html
В матрице найти количество строк, у которых все нули C++
В матрице найти количество строк, у которых все нули (с комментариями если можно)
C++ Сортировка методом Шелла
Не могу разобраться с сортировкой методом Шелла именно в двумерном массиве. Если, например, нам дан двумерный массив 10 на 10, а элементы нужно расположить в порядке убывания. Как реализовать эту задачу в коде? Заранее спасибо! Добавлено через 14 минут сортировать нужно столбцы матрицы
C++ явная специализация http://www.cyberforum.ru/cpp-beginners/thread1050269.html
Всем добра, может кто объяснить для чего нужна явная специализация, если можно сделать перегрузку.
C++ Дать описание кода, который определяет сколько нулей лежит вне минимального и максимального значений массива Объясните, что означает каждая строка кода. Заранее спасибо:) Определить, сколько нулей лежит вне минимального и максимального значений массива I. #include <iostream> #include <cstdlib> using namespace std; #define n 20 int main(){ int mas; подробнее

Показать сообщение отдельно
MihaniX
134 / 44 / 1
Регистрация: 06.08.2013
Сообщений: 292
Записей в блоге: 4

Робот К-79 - C++

20.12.2013, 22:29. Просмотров 684. Ответов 10
Метки (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#include <iostream>
#include <vector>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    char program[]="";
    cin>>program;
    char direction='a';
    vector<int> Y;
    vector<int> X;
    X.push_back(0); Y.push_back(0);
    unsigned long int x, y;
    unsigned long int counter=0;
    const unsigned long int num=sizeof(program)/(sizeof(program[0]));
    int q=0;
 
    for (unsigned long int i=0; i<num; i++)
    {
        switch (program[i])
        {
        case 'R':
            {
                switch (direction)
                {
                case 'a':
                    {
                        direction='b';
                        break;
                    }
                case 'b':
                    {
                        direction='c';
                        break;
                    }
                case 'c':
                    {
                        direction='d';
                        break;
                    }
                case 'd':
                    {
                        direction='a';
                        break;
                    }
                }
                break;
            }
        case 'L':
            {
                switch (direction)
                {
                case 'a':
                    {
                        direction='d';
                        break;
                    }
                case 'b':
                    {
                        direction='a';
                        break;
                    }
                case 'c':
                    {
                        direction='b';
                        break;
                    }
                case 'd':
                    {
                        direction='c';
                        break;
                    }
                }
                break;
            }
        case 'S':
            {
                 switch (direction)
                 {
                 case 'a':
                     {
                         x++;
                         break;
                     }
                 case 'b':
                     {
                         y++;
                         break;
                     }
                 case 'c':
                     {
                         x--;
                         break;
                     }
                 case 'd':
                     {
                         y--;
                         break;
                     }
                 }
                 /* ... */
                 counter++;
                 for (unsigned long int i=0; i<X.size(); i++)
                 {
                     if ((X[i]==x)&&(Y[i]==y))
                     {
                         q=1;
                         goto exit;
                     }
                 }
 
                 /* ... */
                 Y.push_back(y); X.push_back(x);
                 break;
            }
 
 
        }
    }
    exit:
        switch (q)
        {
        case 1:
            {
                cout<<counter;
                break;
            }
        case 0:
            {
                cout<<-1;
                break;
            }
        }
    return 0;
}
Условие:
Максимальное время работы на одном тесте:

2 секунды

Максимальный объем используемой памяти:

16 мегабайт

Петя написал программу движения робота К-79. Программа состоит из следующих команд:
S — сделать шаг вперед
L — повернуться на 90 влево
R — повернуться на 90 вправо
Напишите программу, которая по заданной программе для робота определит, сколько шагов он сделает прежде, чем впервые вернется на то место, на котором уже побывал до этого, либо установит, что этого не произойдет.
Формат входных данных
Во входном файле записана одна строка из заглавных латинских букв S, L, R, описывающая программу для робота. Общее число команд в программе не превышает 200, при этом команд S — не более 50.
Формат выходных данных
В выходной файл выведите, сколько шагов будет сделано (то есть выполнено команд S) прежде, чем робот впервые окажется в том месте, через которое он уже проходил. Если такого не произойдет, выведите в выходной файл число –1.

Что у меня не так?? Я догадываюсь что не срабатывает структура switch(...) case: {} но почему??? Алгоритм вроде верный:
завожу список посещенных клеток в 2 вектора и сравниваю на каждой итерации цикла... Ставлю счетчик на число шагов...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru