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

C для начинающих

Войти
Регистрация
Восстановить пароль
 
Rob_Dale
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 6
#1

Машина Тьюринга для сложения. Подскажие ошибку в алгоритме - C (СИ)

10.02.2015, 12:47. Просмотров 298. Ответов 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
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
#include <stdio.h>
#include <string.h>
 
void N1ToString(int, char*);
 
 
int main()
{
    int n1, n2;
    int i;
    char *lentgh, *fi, *se;
    char plus[2]="+", sharp[2]="#";
    char st;
    int q=0;
 
    for(;1;)
     { printf("Vvedite 1-e chislo: ");
       scanf("%d", &n1);
       printf("Vvedite 2-e chislo: ");
       scanf("%d", &n2);
       if (n1>0 && n2>0) break;
       else printf("Vvedite korrektnye dannye (n1,n2>0)\n");
     }
 
 
 
 
    fi=(char*)malloc(n1*sizeof(char));
    se=(char*)malloc(n2*sizeof(char));
 
    for(i=0; i<n1; i++)
    {
        fi[i]='|';
    }
    for(i=0; i<n2; i++)
    {
        se[i]='|';
    }
 
    puts(fi);
    puts(se);
 
    lentgh=(char*)malloc((n1+n2+10)*sizeof(char));
 
    strcat(lentgh,sharp);
    strcat(lentgh,fi);
    strcat(lentgh, plus);
    strcat(lentgh, se);
    strcat(lentgh, sharp);
    puts(lentgh);
 
 
    *lentgh=0;
    for (i=0;i<*lentgh;i++) putchar(' ');
    putchar('^');
    printf("\t\t\tsostoyanie Q%d\n",q);
    getchar();
 
    do{
    st=lentgh[*lentgh];
 
    switch(q)
    {case 0:switch(st)
        {case('#'):q=0;
            lentgh[*lentgh]='#';
            *lentgh++;
            break;
        case('|'):q=0;
            lentgh[*lentgh]='|';
            *lentgh++;
            break;
        case('+'):q=1;
            lentgh[*lentgh]='|';
            *lentgh++;
            break;
        default:*lentgh++;break;}
        break;
    case 1:switch(st)
        {case('#'):q=2;
            lentgh[*lentgh]='#';
            *lentgh--;
            break;
         case('|'):q=1;
            lentgh[*lentgh]='|';
            *lentgh++;
        default:*lentgh++;break;}
        break;
    case 2:switch(st)
        {case('|'):
            q=-1;
            lentgh[*lentgh]='#';
            break;
        default:*lentgh++;break;}
        break;
    }
 
    puts(lentgh);
    for (i=0;i<*lentgh;i++) putchar(' ');
    putchar('^');
    printf("\t\tsostoyanie Q%d\n",q);
    getchar();
    } while(q!=-1);
    printf("\nkonets raboty");
    getchar();
 
    free(lentgh);
    free(fi);
    free(se);
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2015, 12:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Машина Тьюринга для сложения. Подскажие ошибку в алгоритме (C (СИ)):

Машина Тьюринга на C - C (СИ)
Добрый день, необходимо написать Машину Тьюринга на С или С++, которая переводит число из двоичной системы счисления в четверичную, таблицу...

Машина Тьюринга - прокомментировать код - C (СИ)
Привет! Напишите, пожалуйста, комментарии к данному коду: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;alloc.h&gt; #include...

Машина Тьюринга, алгоритм сложения чисел - Алгоритмы
Доброго времени суток! Для написания программы использую данную модель МТ - ALGO 2000. Написал программу для сложения, в 5-ой...

Машина Тьюринга для функции - Теория автоматов
f(x) = x+2, если х - парное четное х+3, если х - непарное нечетное

Машина Тьюринга для функций - Теория автоматов
Довести, что функция f(x)=2x+4 вычислимая по Тьюрингу, для этого записать Машину Тьюринга которая ее обчислит. Буду признателен за любую...

Машина Тьюринга для распознавания повторов - Теория автоматов
Построить программу м.Т. для распознования языка L = {ww| w (принадлежит) {a,b}*}. Вход: слово V = V1V2...Vn в алфавите {a,b}. Выход:...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2015, 12:47
Привет! Вот еще темы с ответами:

Машина поста и машина тьюринга: необходимо написать алгоритм к данному изображению - Теория автоматов
нужно решение в виде команд МТ и МП

Машина Тьюринга и НАМ для f(x)=2 если y=2x; 1 иначе - Теория автоматов
Дорогие форумчане, у меня есть опыт написания машины тьюринга и нормального алгоритма Маркова для линейно заданных функций, но для системы,...

Машина Тьюринга для подсчета заданных символов в строке - Теория автоматов
построить машину тьюринга,ответ пожайулста можно в виде таблицы дабы понятнее было Правила форума: 5.18. Запрещено размещать задания и...

Машина Тьюринга, написание программы для вычисления функции f(n)=n-2 (=0, если n=0,1) - Теория автоматов
Записать в алфавите {a,l,*} программу машины Тьюринга для вычисления функции f(n)=n-2 (=0, если n=0,1) Помогите, пожалуйста, до меня не...


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

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

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