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

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

Войти
Регистрация
Восстановить пароль
 
_Ант_
-113 / 1 / 0
Регистрация: 18.10.2012
Сообщений: 30
#1

Калькулятор - "достать " число из строки - C++

05.11.2012, 20:11. Просмотров 650. Ответов 1
Метки нет (Все метки)

Начал прогать калькулятор и столкнулся с дилемой - я не могу обработать число!
То есть не могу "достать " число из строки.
Где ошибка, подскажите плиз, уже пол дня бьюсь ищу ее.
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
# include <iostream>
# include <typeinfo>
# include <cstring>
# include <cctype>
using namespace std;
void eatspaces(char *str){
        int i=0,j=0;
        while (true){
            if (*(str+i)!=' ') { *(str+j)=*(str+i); j++;}
            if (*(str+i)=='\0') break;
            i++;
        }
    }
double number(char* p,int &index){
    double d(0.0);
    while (isdigit(*(p+index)))
    {   d=d*10.0+static_cast <double>(*(p+index));
        index++;
    }
    return d;   
}
 
int main(){
    cout<<"enter expression"<<endl;
    const int MAX=80;
    char buffer[MAX],*p;
    cin.getline(buffer,80,'\n');
    p = buffer;
    eatspaces(p);
    cout<<p<<" "<<strlen(p) <<endl;
    int index=0;
    cout<<"first num is: "<<number( p, index)<<" with index: "<<index<<endl;
    system("PAUSE");
    return 0;
}
Добавлено через 1 минуту
Значит эта функция number работает абсолютно спонтанно, и ссылка index не увеличивает своего значения...

Добавлено через 4 минуты
Заменил static_cast <double>(*(p+index)); на (*(p+index)-'0'); и заработало...
Вопрос чего же тогда static_cast <double>(*(p+index)); не работает-то??

Добавлено через 1 минуту
правда ссылку он все равно не увеличивает
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.11.2012, 20:11     Калькулятор - "достать " число из строки
Посмотрите здесь:
C++ Проблемы с переводом строки в число (по книге Лафоре "ООП в С ++ ")
C++ Где достать файл Sales_item.h из учебника "Язык программирования С++"
C++ Определить число вхождений в строку подстроки "аба", вывести символы строки, не являющейся буквами или цифрами
C++ Дано целое число , лежащие в диапазоне от -999 до 999.Вывести строку - словесного описание данного числа вида "отрицательное двухзначное число", "отри
Записать из строки все буква "А" "а" в файл C++
C++ Что такое "широкие" и "узкие" С-строки
C++ Дано натуральное число. Верно ли, что цифра "a" встречается в нем реже, чем цифра "b"?
Калькулятор из главы 6 книги Б.Страуструппа "Пинципы и практика с использованием C++" C++
Проверяю, являются ли 4 строки стихом. "й" принимает за "и", тем самым принимает за слог C++
Программа "калькулятор" через процедурное программирование C++
C++ Не могу найти ошибку "Простейший калькулятор"
Олимпиадное задание "Калькулятор рациональных дробей" C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
09.11.2012, 22:25     Калькулятор - "достать " число из строки #2
_Ант_, у меня код (с учётом *(p+index)-'0') работает.
Yandex
Объявления
09.11.2012, 22:25     Калькулятор - "достать " число из строки
Ответ Создать тему
Опции темы

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