Не могу скомпелировать код - C (СИ)

Узнай цену своей работы

Формулировка задачи:

В интернете нашел вот такой код для синтеза ДМП-автомата на языке С. Не могу скомпелировать!
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
const char Term[6] = "abcde";
char str[100] = "";
int poz = 0; // Порядковый номер буквы введенной строки
// Таблица переходов при считывании символа
int A[5][14] = { 2, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 8, 0, 0, 0, 0, 0, 13,
    0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0, 11, 0 0 0 };
// Таблица записи в стек
int W[14] = { 0, 0, 6, 0, 10, 0, 0, 0, 6, 0, 0, 0, 0, 10 };
void IsTerm(); // Проверка: Все ли символы терминальные?
void Stan(int i); // Функция переходов между состояниями
class Stek
{
public:
    // Присвоение названия нетретм. символа и его индекса
    void Set(char n, int i)
    {
        ind = i;
        name = n;
    }
    // Возвращение индекса терм. символа текущего эл-та стеке
    int GetInd() const
    {
        return ind;
    }
    // Возвращение названия терм. символа текущего эл-та стеке
    char GetName() const
    {
        return name;
    }
 
private:
    int ind; // индекс терм. символа
    char name; // название терм. символа
};
Stek Mas[50];
int j = 0; // Номер текущего эл-та в массиве
int main()
{
    printf("Vvedit stri4ky (terminal symbols: " a \ ", " b \ ", " c \ ", " d \ ", " e \ "): \ n");
    scanf("% s", &str);
    IsTerm();
    Stan(0);
    if (poz == strlen(str))
        printf("\ n --- Stri4ka pravulna! ---") else printf(
            "\ n --- Error! Stri4ka ne pravulna! ---") getch();
    return 0;
}
void IsTerm()
{
    int p;
    // Проверка всех введенных букв на равенство
    // Одной из терминальных
    for (int i = 0; i < strlen(str); i++)
    {
        for (int j = 0; j < strlen(Term) j++)
        {
            p = 0;
            if (str[i] == Term[j])
            {
                p = 1;
                break;
            }
        }
        if (p == 0)
        {
            printf("\ n --- Nevirni terminalni symvolu! ---") getch();
            exit(0);
        }
    }
}
void Stan(int i)
{
    int p = 0; // Флажок: Есть исполнилось считывания символа, или
    // Запись или считывание с стека?
    // Проходим все эл-ты i-го столбца (состояния)
    for (int k = 0; k < 5, k++)
    {
        // Если эл-т таблице не "0" и если текущая буква
        // Совпадает с буквой данной строки то переходим
        // В состояние что соотв. эл-ту таблицы
        if ((A[k][i] ! = 0) && (Term[k] == str[poz]))
        {
            poz++;
            Stan(A[k][i]);
            p = 1;
        }
    }
    if ((!p) && (W[i]))
    {
        switch (i)
        {
            // Добавляем новый эл-т в стек и инициализирует его
            case 2:
                Mas[j].Set(A, 1);
                break;
            case 4:
                Mas[j].Set('B', 1);
                break;
            case 8:
                Mas[j].Set(A, 2);
                break;
            case 13:
                Mas[j].Set('B', 2);
                break;
        }
        j++;
        Stan(W[i]);
        p = 1;
    }
    if ((!p) && (j))
    {
        switch (i)
        {
            // Зануление эл-то из стека при переходе на следующий
            case 7:
                if (Mas[j - 1].GetInd() == 1)
                {
                    Mas[j - 1].Set( '', 0);
                    j--;
                    Stan(3);
                    p = 1;
                }
                if (Mas[j - 1].GetInd() == 2)
                {
                    Mas[j - 1].Set( '', 0);
                    j--;
                    Stan(9);
                    p = 1;
                }
                Break;
            case 11:
                if (Mas[j - 1].GetInd() == 1)
                {
                    Mas[j - 1].Set( '', 0);
                    j--;
                    Stan(5);
                    p = 1;
                }
                if (Mas[j - 1].GetInd() == 2)
                {
                    Mas[j - 1].Set( '', 0);
                    j--;
                    Stan(11);
                    p = 1;
                }
        }
    }
    // Если не сделано считывания символа, или запись или считывание с стека
    // И мы не находимся в 1-м состоянии (конечное состояние) то ошибка
    if ((p == 0) && (i ! = 1))
    {
        printf("\ n --- Error! Stri4ka ne pravulna! ---") getch();
        exit(0);
    }
}

Решение задачи: «Не могу скомпелировать код»

textual
Листинг программы
...
class Stek
{
public:
...

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5