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

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

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

Считать со строки - C++

18.11.2011, 13:13. Просмотров 861. Ответов 4
Метки нет (Все метки)

В строке записано арифметическое выражение, содержащее целые числа и знаки операций сложения, вычитания и умножения. Вычислить его значение, не используя процедуру Val
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2011, 13:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считать со строки (C++):

Как считать строки из файла, если там больше одной строки? - C++
Как считать строки из файла в массив. Если в файле одна строка, то нет проблем, но если несколько, то при использовании функции fgets ...

Считать строки из файла, найти строки на определённую букву - C++
По заданию нужно вывести данные студентов, чьи фамилии начинаются на А и математику сдали на 8 или 9. Проблема в поиске фамилии на А,...

Как считать строки с символом новой строки? - C++
Здравствуйте. мне нужно скопировать/вставить в консоль n-ое количество строк, каждая из которых заканчивается символом новой строки: ...

Считать числа из строки - C++
Есть заранее заданная строка типа string. Нужно считать из нее числа типа int. Например, string s ="12+3"; Нужно вывести 12 и...

Строки, как считать? (С) - C++
В общем глупая, наверное, проблема - нужно ввести строку и найти там самое длинное, в которых вторая "а"(язык С). Как искать слова и...

Считать данные из строки - C++
Как из каждой строки считать данные, которые разделены пробелами? У меня сначала считывается строка, затем должны считаться данные для...

4
Байт
Эксперт C
16567 / 10837 / 1650
Регистрация: 24.12.2010
Сообщений: 20,946
18.11.2011, 13:55 #2
Как-нибудь так
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int Cn = 0; //Счетчик кол-ва операций
int S = 0; // Результат
int N = 0; //Текущее число
char c, op = ' ';  // очередной символ и операция
for(i=0; i<strlen(s); i++) {
 c = s[i];
 if (c<='9' %% c>='0') N = N*10+(c-'0');
 else if (c=='+' || c=='-' || c=='*') {
    if (op=='+') S += N;
    else if (op=='-') S -= N;
    else if (op=='*') S *= N;
    else S = N;
    op = c;
    N = 0;
 }
  if (op=='+') S += N;
  else if (op=='-') S -= N;
  else if (op=='*') S *= N;
}
Посторонние символы здесь будут просто пропускаться.
Попробуй (если нужно) сам сделать проверку на недопустимые символы

Добавлено через 2 минуты
Пардон! Переменная Cn не пригодилась, выбрось ее!
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
18.11.2011, 14:13 #3
Байт. а вы учли приоритеты операций?
Если приоритеты не учитывать, то тоже выложу свой код (с учетом мусора и пробелов построен алгоритм)


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
#include<stdio.h>
#include<ctype.h>
#include<conio.h>
#define SET "+-*"
 
long Rez(char *s)
{
    long a, rez = 0;
    int i = 0, j;
    char c = '\0';
 
    while(s[i] && !isdigit(s[i]))
        i++;
    while (s[i] && isdigit(s[i]))
    {
        rez = rez*10 + (s[i] - '0');
        i++;
    }
    while(s[i])
    {
        while (s[i] && !strchr(SET, s[i]) && !isdigit(s[i]))
            i++;
        if (strchr(SET, s[i]))
            c = s[i++];
        a = 0;
        j = i;
        while (s[i] && isdigit(s[i]))
        {
            a = a*10 + (s[i] - '0');
            i++;
        }
        if (i > j && c)
        {
            if (c == '+') rez += a;
            else if(c == '-') rez -= a;
                 else rez *= a;
            c = '\0';
        }
    }
    return rez;
}
 
int main()
{
    char s[1024];
    fgets(s, 1024, stdin);
    printf("%ld\n", Rez(s));
    getch();
    return 0;
}
Кстати, Байт, я свой протестировал, работает. Это к тому, что у вас, например %% вместо &&, но с кем не бывает, главное алгоритм))
1
Байт
Эксперт C
16567 / 10837 / 1650
Регистрация: 24.12.2010
Сообщений: 20,946
18.11.2011, 14:44 #4
Цитата Сообщение от Thinker Посмотреть сообщение
Байт. а вы учли приоритеты операций?
Нет. Придется делать для себя - учту. И не только приоритеты, но и скобочки.
Кстати, Байт, я свой протестировал, работает. Это к тому, что у вас, например %% вместо &&, но с кем не бывает, главное алгоритм))
По той же причине и не тестировал. Ну а описки - сами понимаете...
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
18.11.2011, 14:48 #5
Цитата Сообщение от Байт Посмотреть сообщение
Ну а описки - сами понимаете...

Не по теме:

это все мелочи

0
18.11.2011, 14:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2011, 14:48
Привет! Вот еще темы с ответами:

Считать числа до конца строки - C++
В файле на вход подаётся несколько строчек с числами. Как можно считывать числа до конца, например, первой строки?

Считать все цифры строки - C++
Допустим дан файл с таким содержанием 1 4 80 25.6 56 3.6 67 23 6 тоесть есть неопределенное количество строк, в которых...

Считать строки из файла в массив ++ - C++
Напишите программный код для считывания строк файла в элементы массива. Заранее спасибо!

Как считать из *.txt строки? - C++
надо в переменную записывать строки и обрабатывать их. Но как узнать конец файла?


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

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

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