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

Из функционального в арифметическое - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Построение программы http://www.cyberforum.ru/cpp-beginners/thread266389.html
Суть в чем, сам я не программист, но по дипломной работе понадобилось написать программу, даже 2. И так переходя к делу, есть в наличии компьютер с Ubuntu на борту на котором запущенно приложение "сервер" этот сервер по TCP принимает данные и в зависимости от этих данных формирует fifo (фифочку) в которой содержаться имена аудио файлов т.е. очередь аудио файлов на воспроизведение. Сам сервер и...
C++ Приложение распознающее слова палиндромы Задача звучит так: Создать приложение, в котором происходит проверка, является ли введенное слово палиндромом (слева направо и справа налево читается одинаково, например: кок). Пожалуйста помогите кто может... http://www.cyberforum.ru/cpp-beginners/thread266382.html
C++ Замена. Рекурсия.
Разработать рекурсивную функцию, которая в заданной строке заменяет все слова, начинающиеся с заглавной буквы, на многоточие. Сделайте пожалуйста кто нибудь на досуге, если найдется лишняя минутка, буду благодарен.
Компилятор выдаёт значение -1.#QO C++
При определённых расчётах компилятор выдаёт -1.#QO. Собственно что могут обозначать символы после точки? Если надо, вот задание: Вот прога: #include <iostream> #include <math.h> #include <iomanip> using namespace std;
C++ немного не обычно http://www.cyberforum.ru/cpp-beginners/thread266373.html
занявшись програмированием на C плавно добрался до работы с графикой, но тут меня ждало разочарование, мой кампилятор (dev-C++) обнаружил отсутствие графических библиотек, мои поиски не увенчались успехом и я не смог найти где их скачать, кто может мне подсказать откуда мне их взять? и еще какой нибудь простой самооучитель на Си по графике, а то в моем пособии не совсем понятно написано для меня.
C++ Нужно отпарсить файл Нужна помощь. Требуется отпарсить следующий файл // Коммантарий // Комментарий Admins { "bober" { "auth" "steam" подробнее

Показать сообщение отдельно
gtrfan34
0 / 0 / 0
Регистрация: 26.12.2010
Сообщений: 10
29.03.2011, 17:45     Из функционального в арифметическое
Дан входной файл. В нем выражение в функциональном представлении. Например,
+(*(a,-(3,x)),f(/(3,10),y)) надо получить: ((a*(3-x))+f(3/10,y))
Я взял (для упрощения) что у любой функции ровно два аргумента.
Я сделал рекурсивную функцию в которую засылется строка и возвращается ссылка на строку(char*) .Засылаем в функцию, если видим знак операции, то запоминаем знак и засылаем рекурсивно два аргумента(строки) в функцию.и так далее пока аргумент не станет состоять из одного символа. После этого возвращает строку, ставим "(" результат_фнц(1ый_аргумент) "знак операции" результат_фнц(2ой_аргумент) ")" (если вместо знака операции f, то небольшие изменения) и этот результат опять возвращаем.
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
#include <string.h>
#include <fstream.h>
const n=100;
char *func(char l[n])  //[COLOR="#ff0000"]как вернуть локальную переменную res?[/COLOR]
{
    char ok,a[n],a1[n],a2[n];bool b0,f;int i,j,k; char res[n];
    if (((l[0]=='+')|(l[0]=='-'))|((l[0]=='/')|((l[0]=='*')|(l[0]=='f'))))
    {
        ok=l[0];
        b0=1;i=3;j=0;f=0;k=0;
        while (b0)
        {
            if (l[i]=='(')
            {
                j++;a1[k]=l[i];//f=true;
            }
            else
                if (l[i]==')') 
                    {
                        j--;a1[k]=l[i];
                    }
            if ((l[i]==',')/*&(f))*/&(j==0))
                b0=0;
            else a1[k]=l[i];
            l++;k++;
        }
        f=0;j=0;k=0;
        while (!f)
        {
            if (l[i]='(')
            {
                j++;a2[k]=l[i];
            }
            else
                if ((l[i]=')')&(j==0))
                {
                    f=1;
                }
                else
                    if (l[i]=')')
                    {
                        j--;a2[k]=l[i];
                    }
                    else
                        a2[k]=l[i];
            k++;i++;
        }
        if (ok!='f')
        {
            a[0]='(';
            strcat(a,func(a1)); //[COLOR="Red"](*) func(a1) должно вернуть n-символьную строку, но
                                                            // добавить надо только ту часть в которой есть значения [/COLOR]
            a[strlen(a)+1]=')';
            a[strlen(a)+1]=ok;
            a[strlen(a)+1]='(';
            strcat(a,func(a2)); //(*)
            a[strlen(a)+1]=')';
        }
        else 
        {
            a[0]='f';
            a[1]='(';
            strcat(a,func(a1));  //(*)
            a[strlen(a)+1]=',';
            strcat(a,func(a2));  //(*)
            a[strlen(a)+1]=')';
        }
        //for (i=0;i<n;i++)
        //  cout<<a[i];
        strcpy(res,a);
        return res;
        ;
    }
    else 
        if (strlen(l)==1)
        {   //cout<<l[0];
            res[0]=l[0];
            return res;
        }
    
}
void main()
{
    char l[n],b[n];int i=0;
    ifstream input;
           input.open ("input.txt",ios::in);
    input.getline(l,sizeof(l));
    for (i=0;i<strlen(l);i++)
    cout<<l[i];
    strcpy(b,func(l));
    cout<<'\n';
    for (i=0;i<n;i++)
    cout<<b[i];
    
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru