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

Очередь - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ вычисление степени http://www.cyberforum.ru/cpp-beginners/thread323224.html
Здрасьте! Помогите плиз!!! Нужно: вычислить a в степени (n) , если (n>0). Люди добрые хелп плиз!!!!!
C++ Лабораторки по програмированию лаба1 Написать программу для расчета стоимости междугородних разговоров. Программа выводит на экран приглашение на ввод дня недели (может вводиться как число или как символ или как символьная... http://www.cyberforum.ru/cpp-beginners/thread323219.html
C++ Посоветуйте компилятор из MS Visual Studio
MS Visual Studio 6.0 C++ или MS Visual Studio 2005? И пожалуйста называйте причины почему вы выбрали именно этот компилятор и не тот?
C++ Написать рекурсивную функцию удалениея пробелов из строки
Написать рекурсивную функцию, удаление пробелов из строки
C++ Стек содержит целые числа, удвоить вхождение нуля в стеке http://www.cyberforum.ru/cpp-beginners/thread323179.html
Стек содержит целые числа, удвоить вхождение нуля в стеке
C++ Вызов функции Написать вызов функции для строковых переменных, помогите! подробнее

Показать сообщение отдельно
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
20.06.2011, 17:58
Вот держи начиркал на скорую руку, я как понял ты хочешь получить позиции символного массива который начинается на еденицу а не с нуля.

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
// подсчёт кол-во скобок
int c_len(const char* str) {
    int len = 0;
    while( *str ) {
         if( *str++ == '(' )
            len++;
    }
    return len;
}
 
// парсер возвращает позиции
int c_pos(const char* str, int start, int& first, int& last) {
    int cnt = 0, pos = 0;
    char ch = 0;
    for(int i = start; *((str) + i) != '\0'; i++) {
        if( *((str) + i) == '(' && ch != '(' ) {
            ch = *((str) + i);
            pos = i;
                                  cnt++;
        } else {
            if( *((str) + i) == '(' )
                cnt++;
            else if( *((str) + i) == ')' ) {
                if(ch == '(')   {
                       cnt--;
                       if(cnt <= 0) {
                       last = i + 1;
                       break;
                       }
                }
            }
        }
    }
    first = pos + 1;
    return  pos + 1;
}
 
 
 
 
 void  main(void){
 
    const char*  str = "a+(45-f(x)*(b-c))";
    int cur = 0, first = 0, last = 0;
   
    int  sz = c_len(str);
    while( sz-- ) {
        cur = c_pos(str, cur, first, last);
        printf("pos first = %d, pos last = %d\n", first, last);
    }
    
    //  ещё проверка
    puts("");
 
    str   = "(2*(5+5))-(2+2)";
    cur  = 0;
    sz   = c_len(str);
    while( sz-- ) {
        cur = c_pos(str, cur, first, last);
        printf("first = %d, last = %d\n", first, last);
    }
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.