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

Очередь - C++

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

Показать сообщение отдельно
xAtom
 Аватар для xAtom
910 / 735 / 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);
    }
}
 
Текущее время: 15:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru