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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ilizard
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 50
#1

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

20.04.2013, 20:23. Просмотров 319. Ответов 0
Метки нет (Все метки)

Нужно обработать выражение выделенное в строке так: [[[...]]]
Например вводим строку [[[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 минут
Откликнетесь кто нибудь(
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.04.2013, 20:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как записать встречающиеся числа в строке в отдельный массив? (C++):

как в тексте (из файла) найти все числа и сохранить их в отдельный массив?? - C++
вообще без понятия просто из файла прочитала все разделила на лексемы(точка, зпт, пробел, двоет, плюс) а дальше что??? ...

Записать все двоичные числа по порядку каждую цифру в отдельный элемент массива - C++
Дано число p - количество знаков в двоичном числе Нужно записать все двоичные числа по порядку каждую цифру в отдельный элемент...

Задача по STL (В строке текста, все числа, встречающиеся перевернуть, оставив на месте) - C++
В строке текста, все числа, встречающиеся перевернуть, оставив на месте.

Напечатать различные числа, встречающиеся в одной последовательности, но не встречающиеся в другой - C++
На входе 2 последовательности напечатать различные числа встречающиеся в одной но не встречающиеся в другой пример: input ...

Как записать числа в массив? - C++
Как вставить единицу и 0 в массив,а потом перевернуть числа справа - налево ? ( перевод в двоичную систему) int n; cin&gt;&gt;n; while...

разделить числа, и записать их как массив - C++
Добрый вечер! Подскажите пожалуйста, как можно, имея, например, файл с последовательностью чисел 2 7 4 3, разделить числа, и записать их...

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

Ввести квадратную матрицу целых чисел*. Элементы матрицы, которые не попадают в интервал [a,b] записать в отдельный вектор (массив) - C++
Парни, помогите пожалуйста сложить программку вот с таким условием: Ввести квадратную матрицу целых чисел*. Элементы матрицы, которые...

Вывести в отдельный массив элементы, меньшие заданного числа А - C++
Вывести в отдельный массив элементы, меньшие заданного числа А #include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;stdlib.h&gt; int...

Как массив цифр записать в виде одного числа? - C++
Как массив цифр записать в виде одного числа? Например: есть массив а=2,a=4,a=5,a=9, а нужно записать просто одним числом 2459.

как в массив записать случайные числа но чтобы не повторялись - C++
Как в массив записать случайные числа но чтобы не повторялись?? Пишу программу тесты никак не получается выводить вопроси случайно без...


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

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

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