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

Как записать встречающиеся числа в строке в отдельный массив? - C++

Восстановить пароль Регистрация
 
ilizard
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 50
20.04.2013, 20:23     Как записать встречающиеся числа в строке в отдельный массив? #1
Нужно обработать выражение выделенное в строке так: [[[...]]]
Например вводим строку [[[45 + 2,5*7,5]]]
Надо получить массив, где c[0] = 45 ; d[1] = 2,5 ; d[2] = 7,5.
И еще один массив, где b[1] = '+' ; b[2] = '*'

Потом это используется для вычисления значения выражения.

Я написала, но обрабатываются при этом только целые числа, но мне нужны и вещественные!
Помогите, пожалуйста, никак не могу сообразить что же делать теперь. Переписывать все полностью?

Вот мой код:
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
#include <cstdlib>
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{char a[20],b[20];
int i,j,one,k=0,posl,two,c[20];
 
cin.getline(a, 20);
 
for (i=0;i<20;i++){ //обнуляем массивы
    c[i]=0;
    b[i]='0';
    m[i]=0;}
//-----------------------ищем идущие подряд скобки, запоминаем расположение
for(int z = 0; z < 20-3; z++){
        if(a[z] == '[' && a[z+1] == '[' && a[z+2] == '['){
                one = z + 3;
                z = 20;
                }
                }
                cout<<one;
for(int z = one; z < 20-3; z++){
        if(a[z] == ']' && a[z+1] == ']' && a[z+2] == ']'){
                two = z - 1;
                z = 20;
                }
                }
                cout<<two;
    
//------------если встречается число записываем в массив с, если знак в b             
j=-1;
 
for (i=one;i<=(two);i++) {    //ищем цифры, если многозначные складываем
    if (a[i]-'0'>=0 && a[i]-'0'<=9){
       j++;
       c[j]=a[i]-'0'; 
      if (((a[i++]-'0')>=0) && ((a[i+1]-'0')<=9)){j++;
       while (a[i]-'0'>=0 && a[i]-'0'<=9){
          c[j]=a[i]-'0';
          c[j-1] = c[j-1]*10 + c[j];
          i++;}j--;i--;}
    }
    else{
        b[j+1]=a[i];}
} 
 
 
for (i=0;i<20;i++)
    cout<<"c[i]="<<c[i]<<'\n';
for (i=0;i<20;i++)
    cout<<"b[i]="<<b[i]<<'\n';
 
 
//считаем, сначала для * и /, затем для + и -
int n=20;
for (i=1;i<=n;i++) {    
    if (b[i]=='*') 
       {c[i]=c[i-1]*c[i];        //выполняем действие
         for (j=i;j<=n;j++){     //сдвигаем массив на 1 элемент влево
             c[j-1]=c[j];
             b[j]=b[j+1];}
         n--; i--;}
 
   if (b[i]=='/') 
       {c[i]=c[i-1]/c[i];
         for (j=i;j<=n;j++){
             c[j-1]=c[j];
             b[j]=b[j+1];}
         n--;i--;}
         }
for (i=1;i<=n;i++) {    
    if (b[i]=='+') 
       {c[i]=c[i-1]+c[i];
         for (j=i;j<=n;j++){
             c[j-1]=c[j];
             b[j]=b[j+1];} 
         n--;i--;}
 
    if (b[i]=='-') 
       {c[i]=c[i-1]-c[i];
         for (j=i;j<=n;j++){
             c[j-1]=c[j];
             b[j]=b[j+1];} 
         n--;i--;}}
 
    cout<<"otvet"<<c[0]<<'\n';
 
getch();
}
Добавлено через 38 минут
Откликнетесь кто нибудь(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2013, 20:23     Как записать встречающиеся числа в строке в отдельный массив?
Посмотрите здесь:

разделить числа, и записать их как массив C++
C++ Вывести в отдельный массив элементы, меньшие заданного числа А
C++ как в тексте (из файла) найти все числа и сохранить их в отдельный массив??
Записать все двоичные числа по порядку каждую цифру в отдельный элемент массива C++
Ввести квадратную матрицу целых чисел*. Элементы матрицы, которые не попадают в интервал [a,b] записать в отдельный вектор (массив) C++
Задача по STL (В строке текста, все числа, встречающиеся перевернуть, оставив на месте) C++
Напечатать различные числа, встречающиеся в одной последовательности, но не встречающиеся в другой C++
Как записать числа в массив? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 12:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru