С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

Двусвязный список с объектом трех типов: "целое число", "вещественное число", "строка" - C++
Есть проблема. Реализовать двухсвязный список. Каждый элемент списка может содержать один объект. Объект может быть трех типов: &quot;целое...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Перегрузка функций "ввести в поток", "вывести с потока", "умножить вектор на число" - C++
Подскажите пожалуйста, как убрать ошибки с этой программы? (делала перегрузку &quot;ввести в поток&quot; и &quot;вывести с потока&quot;, а также &quot;умножить...

Вывести на экран монитора число с наименованием "год","года", "лет" - C++
Прошу прогу в С++. Дано натуральное число n (n&lt;=100), определяющее в годах возраст человека. Составить программу, по которой на экран...

Вывести текст файла, заменив цифры от 0 до 9 на слова "ноль", "один"."девять", начиная каждое предложение с новой строки - C++
Написать программу, которая считывает текст из файла и выводит его на экран, заменив цифры от 0 до 9 на слова &quot;ноль&quot;, &quot;один&quot;...&quot;девять&quot;,...

Для каждого элемента последовательности вывести на экран "true" если число чётное и "false" если число нечёное - C++
Задана последовательность из 5 цифр. Для каждого числа вывести на экран &quot;true&quot; - если число четное и &quot;false&quot; - если не четное. ...

1
silent_1991
Эксперт С++
4989 / 3046 / 149
Регистрация: 11.11.2009
Сообщений: 7,028
Завершенные тесты: 1
09.11.2012, 22:25 #2
_Ант_, у меня код (с учётом *(p+index)-'0') работает.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2012, 22:25
Привет! Вот еще темы с ответами:

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Проблемы с переводом строки в число (по книге Лафоре "ООП в С ++ ") - C++
Лафоре &quot;ООП в Си ++ &quot; - проблемы с упражнением 12, глава 7 Условие: Напишите программу, которая будет принимать от пользователя две...

Дано натуральное число. Найти сумму последних "n" цифр "n" числа, не применяя переменых значений - C++
Здравствуйте, помогите написать две программы. 1) Дано натуральное число. Найти сумму последних &quot;n&quot; цифр &quot;n&quot; числа, не применяя...

дано четырехзначное число. если сумма первых 2 цифр=сумме 2 последних, написать "yes", иначе "no" - C++
Вот попробовал написать код но ошибку выдает: #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; int main() { ...


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

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

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