Язык Си в примерах/Простая грамматика: различия между версиями
Содержимое удалено Содержимое добавлено
Karagota (обсуждение | вклад) мНет описания правки |
Greck (обсуждение | вклад) мНет описания правки |
||
Строка 3:
Грамматики (подмножества множества слов в некотором алфавите ) можно
описывать с помощью правил
s -> 0
Строка 9 ⟶ 8 :
s -> 2 s s
s -> 3 s s s
Правило <tt>s -> 3 s s s</tt> , к примеру, означает, что если A, B и C являются корректными словами (принадлежат грамматике), то и слово "3 A B C" тоже является корректным (пробелы не считаются).
* Примеры корректных слов: 0, 10, 110, 200, 2100, 2010, 1111111110.
▲Примеры не корректных слов: 01, 00, 300.
Приведённая ниже программа на С определяет корректность введённого слова.▼
#include <stdio.h>
#include <limits.h>
int Read()▼
▲ Read()
{
int head,i;
scanf("%d", &head);
if(head < 0 || head > 3) {
return 1;
}
for(i = 0; i < head ; i++) { if(Read()) {
if(Read())▼
return 1;
}
return 0;
}
int main()
{
if(!Read()) {
if(!scanf("%d",&tmp))
printf("in");
printf("correct\n");
} else {
else▼
printf("incorrect\n");
return 0;
}
|