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

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

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

Решение примера из строки - C++

24.11.2010, 22:49. Просмотров 1029. Ответов 3
Метки нет (Все метки)

Здравствуйте.

Помогите, пожалуйста, сделать задание.

С клавиатуры вводится пример "5+3-1+4"

Нужно решить пример с применением функций isdigit и atoi.

Заранее спасибо за ответы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2010, 22:49     Решение примера из строки
Посмотрите здесь:

Решение по примера - C++
ребят не могу написать код под уравнения. помогите плиз... Числа: а, m, n задаются через int

Решение ламерского примера - C++
Доброго времени суток, уважаемые форумчане! Возникла проблема при решении простого примера. Ответ выдаёт всё время один и тот же, в не...

Решение математического примера с использованием класса - C++
Нужно решить пример с помощью класса. В принципе, я всё написал, с ответом сходится полностью. Но, если честно, я делал многое наобум и не...

Задача на строки(поправьте решение) - C++
Задание. Преобразовать строку, содержащую выражение на Си с операциями (=,==,!=,a+=), в строку, содержащую эти же операции с...

Решение биквадратного уравнения, заданного в виде строки в рантайме - C++
Как решить биквадратное уравнение вида "ax^4+bx^2+c", при том что уравнение задается во время программы в виде строки "2 x^4 - 3x^2+4" ,...

Ошибка примера - C++
#include <iostream> #include <math.h> using namespace std; int main() { int a,y,z,b,f,c; cout<<"Введете число а=...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
24.11.2010, 23:09     Решение примера из строки #2
Т.е. нужно что бы программа сосчитала введенное выражение?

Добавлено через 3 минуты
Вообще для такой задачи isdigit и atoi не нужно.
Если использовать stringstream.
DevilX
0 / 0 / 0
Регистрация: 27.04.2009
Сообщений: 13
24.11.2010, 23:12  [ТС]     Решение примера из строки #3
Цитата Сообщение от gooseim Посмотреть сообщение
Т.е. нужно что бы программа сосчитала введенное выражение?
Да

Вообще для такой задачи isdigit и atoi не нужно.
Нужно сделать используя эти функции.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2010, 00:10     Решение примера из строки
Еще ссылки по теме:

перевод примера в c++ - C++
Всем доброго времени суток, это моя первая домашка по информатике в с++, помогите пожалуйста перевести этот пример в c++, заранее спасибо. ...

Вычислить значение примера - C++
Задание во вложении.

Вычислить значение примера - C++
Задание во вложении.

Разбор примера работы побитового И - C++
Здравствуйте, в процессе моего изучения побитовых операций возникли некоторый вопросы, на которые учебник ответить не смог, надеюсь на вашу...


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

Или воспользуйтесь поиском по форуму:
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
25.11.2010, 00:10     Решение примера из строки #4
В стиле си:
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
 
int count=0;
int vals[2];
 
void push(int val)
{
    if(!count)
        vals[0]=val;
    else if(count==1)
        vals[1]=val;
    count++;
}
 
int pop()
{
    count--;
    if(count==1)
        return vals[1];
    else if(count==0)
        return vals[0];
    
}
 
int main()
{
    int start=0;
    unsigned i;
    char o='\0';
    char str[256]={0};
    char buf[256]={0};
    int v1, v2;
    scanf("%s", str);
 
    for(i=0;i<=strlen(str);i++)
    {   
        if(isdigit(str[i]))
            continue;
        else 
        {
            strncpy(buf, str+start, i-start);
            start=i+1;
            push(atoi(buf));
            if(o=='+')
            {
                v2=pop();
                v1=pop();
                push(v1+v2);
                o=str[i];
            }
            else if(o=='-')
            {
                v2=pop();
                v1=pop();
                push(v1-v2);
                o=str[i];
            }   
            else
                o=str[i];
            if(!str[i])
                break;
        }
    }
 
    v1=pop();
    printf("%d", v1);
    system("pause");
}
Yandex
Объявления
25.11.2010, 00:10     Решение примера из строки
Ответ Создать тему
Опции темы

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