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

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

Восстановить пароль Регистрация
 
DevilX
 Аватар для DevilX
0 / 0 / 0
Регистрация: 27.04.2009
Сообщений: 13
24.11.2010, 22:49     Решение примера из строки #1
Здравствуйте.

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

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

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

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

C++ Задача на строки(поправьте решение)
C++ Решение ламерского примера
Решение по примера C++
C++ Ошибка примера
C++ перевод примера в c++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
24.11.2010, 23:09     Решение примера из строки #2
Т.е. нужно что бы программа сосчитала введенное выражение?

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

Вообще для такой задачи isdigit и atoi не нужно.
Нужно сделать используя эти функции.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
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     Решение примера из строки
Ответ Создать тему
Опции темы

Текущее время: 16:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru