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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Форматированное чтение из файла http://www.cyberforum.ru/cpp-beginners/thread843566.html
Пишу телефонный справочник нужно из одной строки вытаскивать номер фио и адресс чёт не выходит ничего(( #include <iostream.h> #include <conio.h> #include <stdlib.h> #include <stdio.h> struct refBook { int num;
C++ Бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой Дано бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой. http://www.cyberforum.ru/cpp-beginners/thread843564.html
Классы (исправить ошибку) C++
Подскажите пожалуйста, как исправить. Всё написано, только в функции main при реализации нахождения элемента не самого дорого и не самого дешёвого, выдаётся ошибка: error: cannot convert `Element' to `double' in assignment (83 строчка). Вспомогательный класс - элемент сборки мебели, имеющий строковое поле название (шуруп, доска), целое поле - вес и вещественное поле стоимость грамма...
Перегрузка операторов для класса "множество целых чисел" C++
Собственно, в этом и вопрос. Как перегрузить операторы "+" и "-" для объединение и разности двух множеств?
C++ Создать базу данных (массив структур) в соответствии с заданой структурой http://www.cyberforum.ru/cpp-beginners/thread843542.html
Создать базу данных (массив структур) соотвественно заданной структуре для двух групп 5-10 структур и для каждой группы. Реализовать редактирование записей (изменение, добавление, удаление). Начальные данные должны вводится с проверкой области допустимых значений. Все действия пользователя должны контролироваться и обеспечиваться осмысленными сообщениями. Реализовать в соответствии со своим...
C++ Работа с массивом (найти номер максимального значения, произведение элементов, преобразовать массив) Двумерный массив m на n (размерности массивов задаются с клавиатуры) заполнить случайным образом и найти: 1.номер максимального значения элемента массива 2. произведение элементов массива, расположенных между первым и вторым нулевым элементами 3. преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине -... подробнее

Показать сообщение отдельно
ilizard
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 50

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

20.04.2013, 20:23. Просмотров 299. Ответов 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 минут
Откликнетесь кто нибудь(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru