Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Rob_Dale
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 6
#1

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

10.02.2015, 12:47. Просмотров 319. Ответов 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;
}

http://www.cyberforum.ru/c-beginners/thread1317114.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2015, 12:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Машина Тьюринга для сложения. Подскажие ошибку в алгоритме (C (СИ)):

Машина Тьюринга - прокомментировать код
Привет! Напишите, пожалуйста, комментарии к данному коду: #include...

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

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

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

Машина Тьюринга для функции f(x,y)=x+y
Здравствуйте! Помогите написать машину Тьюринга для функции f(x,y)=x+y. Для 2...

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

Машина Тьюринга для распознавания повторов
Построить программу м.Т. для распознования языка L = {ww| w (принадлежит)...

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

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

Как выглядит машина Тьюринга для функции f(x,y)=x-y/3
Как выглядит машина для функции f(x,y)=x-y/3 ?


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

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

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