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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
yuliyayuliya28
4 / 4 / 0
Регистрация: 06.03.2011
Сообщений: 319
#1

Функция грамматики (объяснить) - C++

03.12.2012, 03:56. Просмотров 772. Ответов 0
Метки нет (Все метки)

здравствуйте помогите разобрать функцию,


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
char    *Grammar[]={
    "Z:E",
    "E:E+T",
    "E:E-T",
    "E:T",
    "T:T*F",
    "T:T/F",
    "T:F",
    "F:i",
    "F:c",
    "F:(E)",
    NULL
    };
 
 
int TestOnGrammar()
{
        char *ss,*q;
        int n,j;
        for (n=0; Grammar[n] !=NULL; n++){//
                for(q=ss=Grammar[n]+2; *ss !='\0'; ss++);
                ss--;
                for(j=sp; (ss>=q) && (Stack[j]==*ss); j--,ss--);
                if (q== ss+1){
                        j++;
                        sp=j;
                        Stack[sp]=*Grammar[n];
                        Stack[sp+1]='\0';
                        return(1);
                }
        }
Проходим по всему массиву грамматика, for (n=0; Grammar[n] !=NULL; n++)
в этой строке проходим по одному элементу массива?т.е. например "Z:E" мы пропускаем Z: и находимся на E так? for(q=ss=Grammar[n]+2; *ss !='\0'; ss++);
дальнейшее не очень понятно(

Добавлено через 48 минут
Цитата Сообщение от yuliyayuliya28 Посмотреть сообщение
здравствуйте помогите разобрать функцию,


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
char    *Grammar[]={
    "Z:E",
    "E:E+T",
    "E:E-T",
    "E:T",
    "T:T*F",
    "T:T/F",
    "T:F",
    "F:i",
    "F:c",
    "F:(E)",
    NULL
    };
 
 
int TestOnGrammar()
{
        char *ss,*q;
        int n,j;
        for (n=0; Grammar[n] !=NULL; n++){//
                for(q=ss=Grammar[n]+2; *ss !='\0'; ss++);
                ss--;
                for(j=sp; (ss>=q) && (Stack[j]==*ss); j--,ss--);
                if (q== ss+1){
                        j++;
                        sp=j;
                        Stack[sp]=*Grammar[n];
                        Stack[sp+1]='\0';
                        return(1);
                }
        }
Проходим по всему массиву грамматика, for (n=0; Grammar[n] !=NULL; n++)
в этой строке проходим по одному элементу массива?т.е. например "Z:E" мы пропускаем Z: и находимся на E так? for(q=ss=Grammar[n]+2; *ss !='\0'; ss++);
дальнейшее не очень понятно(
Grammar[n] - элемент массива
Grammar[n]+2 - правая часть элемента после :

Добавлено через 3 часа 6 минут
Цитата Сообщение от yuliyayuliya28 Посмотреть сообщение
здравствуйте помогите разобрать функцию,


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
char    *Grammar[]={
    "Z:E",
    "E:E+T",
    "E:E-T",
    "E:T",
    "T:T*F",
    "T:T/F",
    "T:F",
    "F:i",
    "F:c",
    "F:(E)",
    NULL
    };
 
 
int TestOnGrammar()
{
        char *ss,*q;
        int n,j;
        for (n=0; Grammar[n] !=NULL; n++){//
                for(q=ss=Grammar[n]+2; *ss !='\0'; ss++);
                ss--;
                for(j=sp; (ss>=q) && (Stack[j]==*ss); j--,ss--);
                if (q== ss+1){
                        j++;
                        sp=j;
                        Stack[sp]=*Grammar[n];
                        Stack[sp+1]='\0';
                        return(1);
                }
        }
Проходим по всему массиву грамматика, for (n=0; Grammar[n] !=NULL; n++)
в этой строке проходим по одному элементу массива?т.е. например "Z:E" мы пропускаем Z: и находимся на E так? for(q=ss=Grammar[n]+2; *ss !='\0'; ss++);
дальнейшее не очень понятно(

Добавлено через 48 минут


Grammar[n] - элемент массива
Grammar[n]+2 - правая часть элемента после :
Не пойму что происходит в третьем цикле помогите пожалуйста(
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2012, 03:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция грамматики (объяснить) (C++):

Функция (объяснить) - C++
Здраствуйте помогите пожалуйста разобраться в функции Не пойму, мы передаём в функцию символ и массив символов, i- счётчик, по...

Объяснить код (рекурсивная функция). - C++
Кто может подробно объяснить эту рекурсивную функцию int Mod(int *a, int *end, int k) { return a < end ? ((*a)%k == 0) +...

Функция strncpy_s - объяснить аргументы функции - C++
strncpy_s(str1, x, str2, y); правильно ли я понимаю что: str1 - куда копируем; str2 - что копируем; y - max размер буфера, для...

Рекурсивная функция суммы (объяснить код) - C++
int summa(int x, int y) { if (x == 0) return y; if (y == 0) return x; return summa(x -1, y)+1; ...

Объяснить, что делает функция, подробно - C++
cin.rdbuf()->in_avail() Добавлено через 19 секунд И что такое rdbuf

Простейшая функция. Нужно объяснить просто - C++
Здравствуйте, братья-программисты. У меня такая проблемулина: перехожу с delphi на cpp, решаю упражнения всякие, но вот с этим не понимаю...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2012, 03:56
Привет! Вот еще темы с ответами:

Не могли бы объяснить, как работает эта функция для удаления цифр? - C++
char* delDig(char *S) { int i,j; i=0; for (j=0; j<strlen(S); j++) if ((S < '0') || (S > '9')) S=S; S=0;...

Объяснить как работает рекурсивная функция и стек вызовов на моем примере - C++
Объясните пожалуйста как работает рекурсивная функция и стек вызовов на моем примере. Здесь известный алгоритм "Разделяй и властвуй". Но...

По поводу грамматики - C++
Поясните почему следующее не правильно #define TEXT_HELLOW(name) '\"' ## HELLOW##name ## '\"' ... main(...){ ... ...

Составление грамматики - C++
Кто делал задачу из книги Страуструпа "Принципы и практика использования С++": Напишите программу, проверяющую корректность...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru